# frozen_string_literal: true
require "delegate"
class Postgres < SimpleDelegator
def self.connect(**kwargs)
new(PG::EM::ConnectionPool.new(**kwargs) { |conn|
conn.type_map_for_results = PG::BasicTypeMapForResults.new(conn)
conn.type_map_for_queries = PG::BasicTypeMapForQueries.new(conn)
})
end
def query_one(sql, *args, field_names_as: :symbol, default: nil)
query_defer(sql, args).then do |rows|
rows.field_names_as(field_names_as)&.first || default
end
end
end