Class: ProconBypassMan::Web::Db

Inherits:
Object
  • Object
show all
Defined in:
lib/procon_bypass_man/web/db.rb

Class Method Summary collapse

Class Method Details

.dbObject



4
5
6
7
# File 'lib/procon_bypass_man/web/db.rb', line 4

def self.db
  # TODO connection cache
  SQLite3::Database.new(ProconBypassMan::Web.config.db_path)
end

.migrate_if_pending_migration(migrations_path: File.join(ProconBypassMan::Web.gem_root, 'lib', 'procon_bypass_man/web', 'migration', "/*.sql")) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/procon_bypass_man/web/db.rb', line 14

def self.migrate_if_pending_migration(migrations_path: File.join(ProconBypassMan::Web.gem_root, 'lib', 'procon_bypass_man/web', 'migration', "/*.sql"))
  db.execute <<~SQL
    create table if not exists "schema_migrations" ("version" varchar not null primary key)
  SQL

  Dir.glob(migrations_path).each do |path|
    if /^(\d+)_[\w.]+$/ =~ Pathname.new(path).basename.to_s
      version = $1
      rows = db.execute("select * from schema_migrations where version = ?", version)
      if rows.size == 0
        sql = File.read(path)
        db.execute(sql)
        db.execute("insert into schema_migrations (version) values (?)", [version])
      end
    end
  end
end

.recreate!Object



9
10
11
12
# File 'lib/procon_bypass_man/web/db.rb', line 9

def self.recreate!
  FileUtils.rm_rf(ProconBypassMan::Web.config.db_path)
  SQLite3::Database.new(ProconBypassMan::Web.config.db_path)
end