Class: Titanium::SQLiteAdapter

Inherits:
Base
  • Object
show all
Defined in:
lib/sqlite_adapter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSQLiteAdapter

Returns a new instance of SQLiteAdapter.



32
33
34
# File 'lib/sqlite_adapter.rb', line 32

def initialize
  @db_file = "data/#{environment}.db"
end

Instance Attribute Details

#db_fileObject (readonly)

Returns the value of attribute db_file.



30
31
32
# File 'lib/sqlite_adapter.rb', line 30

def db_file
  @db_file
end

Instance Method Details

#connectObject



40
41
42
43
# File 'lib/sqlite_adapter.rb', line 40

def connect
  @db = Database.new(@db_file)
  @db.results_as_hash = true
end

#count_by_name(name) ⇒ Object



101
102
103
# File 'lib/sqlite_adapter.rb', line 101

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



91
92
93
94
95
96
97
98
99
# File 'lib/sqlite_adapter.rb', line 91

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



105
106
107
108
109
110
# File 'lib/sqlite_adapter.rb', line 105

def delete_all_by_name(name)
  @db.transaction do
    @db.execute_batch(sql_delete_resources_by_type_name, :name => name)
  end
  return true
end

#disconnectObject



45
46
47
48
49
# File 'lib/sqlite_adapter.rb', line 45

def disconnect
  if @db
    @db.close unless @db.closed?
  end
end

#erase_dbObject



36
37
38
# File 'lib/sqlite_adapter.rb', line 36

def erase_db
  File.delete(File.expand_path(@db_file))
end

#find_by_name_and_conditions(name, key = nil, conditions = nil, sort_field = nil, sort_order = nil, limit = nil, offset = nil) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/sqlite_adapter.rb', line 112

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



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/sqlite_adapter.rb', line 59

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

#startupObject



51
52
53
54
55
56
57
# File 'lib/sqlite_adapter.rb', line 51

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



79
80
81
82
83
84
85
86
87
88
89
# File 'lib/sqlite_adapter.rb', line 79

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