1
0
Fork 0

Add module Partynest::Migration

This commit is contained in:
Alex Kotov 2019-09-04 04:26:12 +05:00
parent 3fd7f6ac7e
commit fce3095e88
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
3 changed files with 51 additions and 43 deletions

View file

@ -48,6 +48,7 @@ module Partynest
config.autoload_paths += [
config.root.join('app', 'primitives'),
config.root.join('app', 'validators'),
config.root.join('lib'),
]
# Use SQL format for database schema

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class InitialMigration < ActiveRecord::Migration[6.0]
include Partynest::Migration
def change
change_types
change_functions
@ -571,47 +573,4 @@ private
end
end
end
def func(name, sql)
reversible do |dir|
dir.up do
execute "CREATE FUNCTION #{name} #{sql}"
end
dir.down do
execute "DROP FUNCTION #{name}"
end
end
end
def enum(name, values)
reversible do |dir|
dir.up do
execute <<~SQL
CREATE TYPE #{name}
AS ENUM (#{values.map { |s| "'#{s}'" }.join(', ')})
SQL
end
dir.down do
execute "DROP TYPE #{name}"
end
end
end
def constraint(table, name, check)
reversible do |dir|
dir.up do
execute <<~SQL
ALTER TABLE #{table} ADD CONSTRAINT #{name} CHECK (#{check})
SQL
end
dir.down do
execute <<~SQL
ALTER TABLE #{table} DROP CONSTRAINT #{name}
SQL
end
end
end
end

View file

@ -0,0 +1,48 @@
# frozen_string_literal: true
module Partynest
module Migration
def func(name, sql)
reversible do |dir|
dir.up do
execute "CREATE FUNCTION #{name} #{sql}"
end
dir.down do
execute "DROP FUNCTION #{name}"
end
end
end
def enum(name, values)
reversible do |dir|
dir.up do
execute <<~SQL
CREATE TYPE #{name}
AS ENUM (#{values.map { |s| "'#{s}'" }.join(', ')})
SQL
end
dir.down do
execute "DROP TYPE #{name}"
end
end
end
def constraint(table, name, check)
reversible do |dir|
dir.up do
execute <<~SQL
ALTER TABLE #{table} ADD CONSTRAINT #{name} CHECK (#{check})
SQL
end
dir.down do
execute <<~SQL
ALTER TABLE #{table} DROP CONSTRAINT #{name}
SQL
end
end
end
end
end