Module: Wal::Migration

Defined in:
lib/wal/migration.rb

Defined Under Namespace

Classes: PublicationDefinition

Instance Method Summary collapse

Instance Method Details

#define_publication(name) {|definition| ... } ⇒ Object

Yields:

  • (definition)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/wal/migration.rb', line 30

def define_publication(name)
  execute <<~SQL
    DO $$
    BEGIN
    CASE WHEN NOT EXISTS (SELECT 1 FROM pg_publication WHERE pubname = '#{name}') THEN
      CREATE PUBLICATION #{name};
    ELSE NULL;
    END CASE;
    END;
    $$;
  SQL

  definition = PublicationDefinition.new(name)
  yield definition

  execute definition.to_sql
end