Add module Partynest::Migration
This commit is contained in:
parent
3fd7f6ac7e
commit
fce3095e88
3 changed files with 51 additions and 43 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
48
lib/partynest/migration.rb
Normal file
48
lib/partynest/migration.rb
Normal 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
|
Reference in a new issue