Class: Hummingbird::Database

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

Instance Method Summary collapse

Constructor Details

#initialize(connection_string, migrations_table) ⇒ Database

Returns a new instance of Database.



5
6
7
8
9
# File 'lib/hummingbird/database.rb', line 5

def initialize(connection_string, migrations_table)
  @sequel_db                     = Sequel.connect(connection_string)
  @migrations_table_name         = migrations_table
  @prepared_run_migration_insert = nil
end

Instance Method Details

#already_run_migrationsObject



15
16
17
# File 'lib/hummingbird/database.rb', line 15

def already_run_migrations
  initialized? ? @sequel_db[@migrations_table_name].order(:run_on).to_a : []
end

#initialized?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/hummingbird/database.rb', line 11

def initialized?
  @sequel_db.tables.include?(@migrations_table_name)
end

#run_migration(name, sql) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/hummingbird/database.rb', line 19

def run_migration(name,sql)
  @prepared_run_migration_insert ||= @sequel_db[@migrations_table_name].prepare(:insert, :record_migration, migration_name: :$name, run_on: :$date)

  @sequel_db.transaction do
    @sequel_db.execute(sql)

    @prepared_run_migration_insert.call(name: name, date: DateTime.now.strftime('%s'))
  end

  true
end