Sha256: a6dc3947492e1a25111a230169115e814c33e6740448e1f41febab8384dc8896

Contents?: true

Size: 782 Bytes

Versions: 1

Compression:

Stored size: 782 Bytes

Contents

module Caco::Postgres
  class ExtensionCreate < Trailblazer::Operation

    step Subprocess(Caco::Postgres::Sql),
      input: ->(_ctx, extension:, **) {{
        sql: "select extname from pg_extension where extname='#{extension}';",
      }},
      id: :sql_find_extension

    step ->(_ctx, output:, extension:, **) {
        output.match?(/^\s#{extension}$/)
      },
      Output(:success) => End(:success),
      Output(:failure) => Track(:success),
      id: :verify_extension_exists

    step Subprocess(Class.new(Caco::Postgres::Sql)),
      input: ->(_ctx, extension:, **) {{
        sql: "create extension #{extension};",
      }},
      id: :create_extension

    step ->(ctx, **) {
        ctx[:created] = ctx[:changed] = true
      },
      id: :mark_created
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
caco-0.1.0 lib/caco/postgres/extension_create.rb