class MicroSql::Table

– A basic table ———————————————————-

Attributes

db[RW]

Public Class Methods

new(db, sql) click to toggle source
# File lib/micro_sql/table.rb, line 6
def initialize(db, sql)
  @db = db

  if sql !~ /\s/
    # no space: sql must be the table_name
    @table_name = sql
    raise "No such table: '#{@table_name}'" unless exists?
  elsif sql =~ /\s*CREATE TABLE\s+([^\( ]+)/
    @table_name = $1
    raise ArgumentError, "Cannot determine table_name from SQL: #{sql}" unless table_name
    build(sql) unless exists?
  end
end

Public Instance Methods

insert(*values) click to toggle source
# File lib/micro_sql/table.rb, line 20
def insert(*values)
  db.insert table_name, *values
end
primary_key() click to toggle source
# File lib/micro_sql/table.rb, line 24
def primary_key
  @primary_key ||= db.primary_key(table_name)
end

Private Instance Methods

build(sql) click to toggle source
# File lib/micro_sql/table.rb, line 34
def build(sql)
  MicroSql.logger.info "Create table #{table_name}"
  db.execute_batch(sql)
end
exists?() click to toggle source
# File lib/micro_sql/table.rb, line 30
def exists?
  db.tables.include?(table_name.to_s)
end