Sha256: 33dc9204de3de9150cded5dff3f3aa33fb2a3c12ea738228a04ac39e6318c2a0

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true
require "logger"

module Ezframe
  class Database
    attr_accessor :sequel

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

    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  

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

    def dataset(table_name)
      @sequel[table_name.to_sym]  
    end
  
    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
    
    def insert(table_name, val_h)
      dataset(table_name).insert(val_h)
    end

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ezframe-0.1.1 lib/ezframe/database.rb
ezframe-0.1.0 lib/ezframe/database.rb