class TestProf::AnyFixture::Dump::PostgreSQL
Constants
- UUID_FUNCTIONS
Attributes
uuid_funcs[R]
Public Instance Methods
compile_sql(sql, binds)
click to toggle source
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 25 def compile_sql(sql, binds) sql.gsub(/\$\d+/) { binds.shift } end
import(path)
click to toggle source
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 29 def import(path) # Test if psql is installed `psql --version` tasks = ActiveRecord::Tasks::PostgreSQLDatabaseTasks.new(conn.pool.spec.config.with_indifferent_access) while_disconnected do tasks.structure_load(path, "--output=/dev/null") end true rescue Errno::ENOENT false end
reset_sequence!(table_name, start)
click to toggle source
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 14 def reset_sequence!(table_name, start) _pk, sequence = conn.pk_and_sequence_for(table_name) return unless sequence sequence_name = "#{sequence.schema}.#{sequence.identifier}" execute <<~SQL ALTER SEQUENCE #{sequence_name} RESTART WITH #{start}; -- any_fixture:dump SQL end
setup_env()
click to toggle source
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 44 def setup_env # Mock UUID generating functions to provide consistent results quoted_functions = UUID_FUNCTIONS.map { |func| "'#{func}'" }.join(", ") @uuid_funcs = execute <<~SQL SELECT pp.proname, pn.nspname, pg_get_functiondef(pp.oid) AS definition FROM pg_proc pp JOIN pg_namespace pn ON pn.oid = pp.pronamespace WHERE pp.proname in (#{quoted_functions}) ORDER BY pp.oid; SQL uuid_funcs.each do |(func, ns, _)| execute <<~SQL CREATE OR REPLACE FUNCTION #{ns}.#{func}() RETURNS UUID LANGUAGE SQL AS $$ SELECT md5(random()::TEXT)::UUID; $$; -- any_fixture:dump SQL end execute <<~SQL SELECT setseed(#{rand}); -- any_fixture:dump SQL end
teardown_env()
click to toggle source
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 75 def teardown_env uuid_funcs.each do |(func, ns, definition)| execute "#{definition}; -- any_fixture:dump" end end
Private Instance Methods
execute(query)
click to toggle source
Calls superclass method
TestProf::AnyFixture::Dump::BaseAdapter#execute
# File lib/test_prof/any_fixture/dump/postgresql.rb, line 85 def execute(query) super.values end