Class: Ink::Sqlite3Adapter

Inherits:
SqlAdapter show all
Defined in:
lib/sqlite3_adapter.rb

Instance Method Summary collapse

Methods inherited from SqlAdapter

#create_all_links, #create_link, #delete_all_links, #find, #find_reference, #find_references, #find_union, format_date, #last_inserted_pk, #remove, transform_from_sql, transform_to_sql

Constructor Details

#initialize(config) ⇒ Sqlite3Adapter

Returns a new instance of Sqlite3Adapter.



5
6
7
8
# File 'lib/sqlite3_adapter.rb', line 5

def initialize(config)
  @type = config[:db_type]
  @db = SQLite3::Database.new(config[:db_server])
end

Instance Method Details

#closeObject



43
44
45
46
47
48
49
50
# File 'lib/sqlite3_adapter.rb', line 43

def close
  return if @db.closed?
  begin
    @db.close
  rescue SQLite3::BusyException
  end
  @db = nil
end

#primary_key_autoincrement(pk = "id") ⇒ Object



52
53
54
# File 'lib/sqlite3_adapter.rb', line 52

def primary_key_autoincrement(pk="id")
  ["`#{pk}`", "INTEGER", "PRIMARY KEY", "ASC"]
end

#query(query, type = Hash) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/sqlite3_adapter.rb', line 24

def query(query, type=Hash)
  type = Hash if not block_given?
  result = Array.new
  re = @db.method("query").call query
  re.each do |row|
    result.push type.new
    re.columns.each_index do |i|
      row[i] = self.class.transform_from_sql(row[i])
      if block_given?
        yield(result[result.length-1], re.columns[i], row[i])
      else
        result[result.length-1][re.columns[i]] = row[i]
      end
    end
  end
  re.close if not re.closed?
  return result
end

#tablesObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/sqlite3_adapter.rb', line 10

def tables
  result = Array.new
  re = @db.query <<QUERY
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;
QUERY
  re.each do |row|
    row.each do |t|
      result.push t
    end
  end
  re.close
  return result
end