Class: KnjDB_sqlite3::Tables
- Defined in:
- lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb
Defined Under Namespace
Classes: Table
Instance Attribute Summary collapse
-
#db ⇒ Object
readonly
Returns the value of attribute db.
-
#driver ⇒ Object
readonly
Returns the value of attribute driver.
Instance Method Summary collapse
- #[](table_name) ⇒ Object
- #create(name, data) ⇒ Object
-
#initialize(args) ⇒ Tables
constructor
A new instance of Tables.
- #list ⇒ Object
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
#db ⇒ Object (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 |
#driver ⇒ Object (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 |
#list ⇒ Object
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 |