Class: Ezframe::Database

Inherits:
Object show all
Defined in:
lib/ezframe/database.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dbfile = nil) ⇒ Database

Returns a new instance of Database.



8
9
10
11
# File 'lib/ezframe/database.rb', line 8

def initialize(dbfile = nil)
  @dbfile = dbfile
  connect
end

Instance Attribute Details

#sequelObject

Returns the value of attribute sequel.



6
7
8
# File 'lib/ezframe/database.rb', line 6

def sequel
  @sequel
end

Instance Method Details

#connectObject



13
14
15
16
17
# File 'lib/ezframe/database.rb', line 13

def connect
  @dbfile ||= ENV["EZFRAME_DB"] || Config[:database] || "sqlite://db/devel.sqlite"
  # puts "Database.connect: dbfile=#{@dbfile}"
  @sequel = Sequel.connect(@dbfile, loggers: [Logger.new($stdout)])
end

#create_table(table_name, dbtype_h) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ezframe/database.rb', line 27

def create_table(table_name, dbtype_h)
  %w[id created_at updated_at].each do |key|
    dbtype_h.delete(key.to_sym)
  end
  # puts "create_table: #{table_name}"
  if @dbfile.index("postgres")
    @sequel.create_table(table_name) do 
      primary_key :id, identity: true
      dbtype_h.each do |key, dbtype|
        column(key, dbtype)
      end
      column(:created_at, :timestamp, default: Sequel::CURRENT_TIMESTAMP)
      column(:updated_at, :timestamp, default: Sequel::CURRENT_TIMESTAMP)
    end
  else
    @sequel.create_table(table_name) do 
      primary_key :id, auto_increment: true
      dbtype_h.each do |key, dbtype|
        column(key, dbtype)
      end
      column(:created_at, :timestamp, default: Sequel::CURRENT_TIMESTAMP)
      column(:updated_at, :timestamp, default: Sequel::CURRENT_TIMESTAMP)
    end
  end
end

#dataset(table_name) ⇒ Object



23
24
25
# File 'lib/ezframe/database.rb', line 23

def dataset(table_name)
  @sequel[table_name.to_sym]  
end

#exec(sql) ⇒ Object



19
20
21
# File 'lib/ezframe/database.rb', line 19

def exec(sql)
  @sequel.run(sql)  
end

#insert(table_name, val_h) ⇒ Object



53
54
55
# File 'lib/ezframe/database.rb', line 53

def insert(table_name, val_h)
  dataset(table_name).insert(val_h)
end

#update(dataset, val_h) ⇒ Object



57
58
59
60
# File 'lib/ezframe/database.rb', line 57

def update(dataset, val_h)
  val_h.update({ updated_at: Time.now() })
  dataset.update(val_h)
end