Module: DataMigrations::Setup

Defined in:
lib/data_migrations/setup.rb

Instance Method Summary collapse

Instance Method Details

#install_upsertObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/data_migrations/setup.rb', line 10

def install_upsert
  ActiveRecord::Base.connection.execute "    CREATE FUNCTION upsert (sql_update TEXT, sql_insert TEXT)\n        RETURNS VOID\n        LANGUAGE plpgsql\n    AS $$\n    BEGIN\n        LOOP\n            -- first try to update\n            EXECUTE sql_update;\n            -- check if the row is found\n            IF FOUND THEN\n                RETURN;\n            END IF;\n            -- not found so insert the row\n            BEGIN\n                EXECUTE sql_insert;\n                RETURN;\n                EXCEPTION WHEN unique_violation THEN\n                    -- do nothing and loop\n            END;\n        END LOOP;\n    END;\n    $$;\n  sql\nrescue ActiveRecord::StatementInvalid\n  # ignore duplicate installs\nend\n"

#setup_data_migrationsObject



3
4
5
6
7
8
# File 'lib/data_migrations/setup.rb', line 3

def setup_data_migrations
  unless @setup
    install_upsert
    @setup = true
  end
end