Class: Titanium::SQLiteAdapter
Instance Attribute Summary collapse
-
#db_file ⇒ Object
readonly
Returns the value of attribute db_file.
Instance Method Summary collapse
- #connect ⇒ Object
- #count_by_name(name) ⇒ Object
- #delete(resource_key) ⇒ Object
- #delete_all_by_name(name) ⇒ Object
- #disconnect ⇒ Object
- #erase_db ⇒ Object
- #find_by_name_and_conditions(name, key = nil, conditions = nil, sort_field = nil, sort_order = nil, limit = nil, offset = nil) ⇒ Object
-
#initialize ⇒ SQLiteAdapter
constructor
A new instance of SQLiteAdapter.
- #insert(name, metadata) ⇒ Object
- #startup ⇒ Object
- #update(resource_key, metadata) ⇒ Object
Constructor Details
#initialize ⇒ SQLiteAdapter
Returns a new instance of SQLiteAdapter.
33 34 35 36 |
# File 'lib/sqlite_adapter.rb', line 33 def initialize @data_dir = File.("~/.titanium/data") @db_file = File.(File.join(@data_dir, "#{environment}.db")) end |
Instance Attribute Details
#db_file ⇒ Object (readonly)
Returns the value of attribute db_file.
31 32 33 |
# File 'lib/sqlite_adapter.rb', line 31 def db_file @db_file end |
Instance Method Details
#connect ⇒ Object
42 43 44 45 46 |
# File 'lib/sqlite_adapter.rb', line 42 def connect File.makedirs(@data_dir) @db = Database.new(@db_file) @db.results_as_hash = true end |
#count_by_name(name) ⇒ Object
104 105 106 |
# File 'lib/sqlite_adapter.rb', line 104 def count_by_name(name) return @db.get_first_value(sql_count_of_resources_by_type_name, :name => name).to_i end |
#delete(resource_key) ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/sqlite_adapter.rb', line 94 def delete(resource_key) @db.transaction do resources_remaining = @db.get_first_value(sql_count_of_resources_by_resource_key, :resource_key => resource_key) @db.execute(sql_delete_attributes_by_resource_key, :resource_key => resource_key) @db.execute(sql_delete_type_by_resource_key, :resource_key => resource_key) if resources_remaining.to_i == 1 @db.execute(sql_delete_resource_by_resource_key, :resource_key => resource_key) end return true end |
#delete_all_by_name(name) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/sqlite_adapter.rb', line 108 def delete_all_by_name(name) @db.transaction do @db.execute_batch(sql_delete_resources_by_type_name, :name => name) end return true end |
#disconnect ⇒ Object
48 49 50 51 52 |
# File 'lib/sqlite_adapter.rb', line 48 def disconnect if @db @db.close unless @db.closed? end end |
#erase_db ⇒ Object
38 39 40 |
# File 'lib/sqlite_adapter.rb', line 38 def erase_db File.delete(@db_file) end |
#find_by_name_and_conditions(name, key = nil, conditions = nil, sort_field = nil, sort_order = nil, limit = nil, offset = nil) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/sqlite_adapter.rb', line 115 def find_by_name_and_conditions(name, key=nil, conditions=nil, sort_field=nil, sort_order=nil, limit=nil, offset=nil) results = {} query_id = generate_query_id @db.transaction do index = 0 @db.execute(sql_drop_sorter_table(query_id)) @db.execute(sql_create_sorter_table(query_id, name, key, conditions, sort_field, sort_order, limit, offset)) @db.execute(sql_query_sorter_table(query_id)) do |row| build_results_hash(results, index, row) index = index + 1 end @db.execute(sql_drop_sorter_table(query_id)) end return build_results_array(results) end |
#insert(name, metadata) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/sqlite_adapter.rb', line 62 def insert(name, ) resource_key = nil @db.transaction do type_id = @db.get_first_value(sql_find_type_id_from_type_name, :name => name) if type_id.nil? @db.execute(sql_insert_type, :name => name) type_id = @db.last_insert_row_id end @db.execute(sql_insert_resource, :type_id => type_id) resource_key = @db.last_insert_row_id now = Time.now.iso8601 ['created_at'] = now ['updated_at'] = now .each do |key,value| @db.execute(sql_insert_attribute, :resource_key => resource_key, :key => key, :value => value) end end return resource_key.to_s end |
#startup ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/sqlite_adapter.rb', line 54 def startup @db.transaction do @db.execute(sql_create_types_table) @db.execute(sql_create_resources_table) @db.execute(sql_create_attributes_table) end end |
#update(resource_key, metadata) ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/sqlite_adapter.rb', line 82 def update(resource_key, ) @db.transaction do @db.execute(sql_delete_attributes_by_resource_key, :resource_key => resource_key) ['created_at'] ||= Time.now.iso8601 ['updated_at'] = Time.now.iso8601 .each do |key,value| @db.execute(sql_insert_attribute, :resource_key => resource_key, :key => key, :value => value) end end return resource_key end |