Class: KnjDB_sqlite3::Tables

Inherits:
Object
  • Object
show all
Defined in:
lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb

Defined Under Namespace

Classes: Table

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Tables

Returns a new instance of Tables.



4
5
6
7
8
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 4

def initialize(args)
  @args = args
  @db = @args[:db]
  @driver = @args[:driver]
end

Instance Attribute Details

#dbObject (readonly)

Returns the value of attribute db.



2
3
4
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 2

def db
  @db
end

#driverObject (readonly)

Returns the value of attribute driver.



2
3
4
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 2

def driver
  @driver
end

Instance Method Details

#[](table_name) ⇒ Object



10
11
12
13
14
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 10

def [](table_name)
  list = self.list
  return list[table_name.to_s] if list[table_name.to_s]
  raise Knj::Errors::NotFound.new("Table was not found: #{table_name}.")
end

#create(name, data) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 30

def create(name, data)
  sql = "CREATE TABLE `#{name}` ("
  
  first = true
  data["columns"].each do |col_data|
    sql << ", " if !first
    first = false if first
    sql << @db.cols.data_sql(col_data)
  end
  
  sql << ")"
  
  @db.query(sql)
  @list = nil
  
  if data["indexes"]
    table_obj = self[name]
    table_obj.create_indexes(data["indexes"])
  end
end

#listObject



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb', line 16

def list
  list = {}
  q_tables = @db.select("sqlite_master", {"type" => "table"}, {"orderby" => "name"})
  while d_tables = q_tables.fetch
    list[d_tables[:name]] = KnjDB_sqlite3::Tables::Table.new(
      :db => @db,
      :driver => @driver,
      :data => d_tables
    )
  end
  
  return list
end