Sha256: 61b293db0d028ddf3a308968986cbb93da5fa3cfad904f5eb948c4446e314c59
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
require "fx/function" module Fx module Adapters class Postgres # Fetches defined functions from the postgres connection. # @api private class Functions # The SQL query used by F(x) to retrieve the functions considered # dumpable into `db/schema.rb`. FUNCTIONS_WITH_DEFINITIONS_QUERY = <<~EOS.freeze SELECT pp.proname AS name, pg_get_functiondef(pp.oid) AS definition FROM pg_proc pp JOIN pg_namespace pn ON pn.oid = pp.pronamespace LEFT JOIN pg_depend pd ON pd.objid = pp.oid AND pd.deptype = 'e' LEFT JOIN pg_aggregate pa ON pa.aggfnoid = pp.oid WHERE pn.nspname = 'public' AND pd.objid IS NULL AND pa.aggfnoid IS NULL ORDER BY pp.oid; EOS # Wraps #all as a static facade. # # @return [Array<Fx::Function>] def self.all(...) new(...).all end def initialize(connection) @connection = connection end # All of the functions that this connection has defined. # # @return [Array<Fx::Function>] def all functions_from_postgres.map { |function| to_fx_function(function) } end private attr_reader :connection def functions_from_postgres connection.execute(FUNCTIONS_WITH_DEFINITIONS_QUERY) end def to_fx_function(result) Fx::Function.new(result) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fx-0.9.0 | lib/fx/adapters/postgres/functions.rb |