defmodule EventStore.Sql.Statements do @moduledoc false require EEx alias EventStore.Sql.{Init, Reset} defdelegate initializers(config), to: Init, as: :statements defdelegate reset(config), to: Reset, as: :statements for {fun, args} <- [ {:create_stream, [:schema]}, {:insert_events, [:schema, :number_of_events]}, {:insert_stream_events, [:schema, :number_of_events]}, {:insert_link_events, [:schema, :number_of_events]}, {:soft_delete_stream, [:schema]}, {:hard_delete_stream, [:schema]}, {:insert_subscription, [:schema]}, {:delete_subscription, [:schema]}, {:try_advisory_lock, [:schema]}, {:advisory_unlock, [:schema]}, {:subscription_ack, [:schema]}, {:insert_snapshot, [:schema]}, {:delete_snapshot, [:schema]}, {:query_all_subscriptions, [:schema]}, {:query_subscription, [:schema]}, {:query_stream_info, [:schema]}, {:query_snapshot, [:schema]}, {:query_stream_events_backward, [:schema]}, {:query_stream_events_forward, [:schema]} ] do file = Path.expand("statements/#{fun}.sql.eex", __DIR__) @external_resource file EEx.function_from_file(:def, fun, file, args, engine: EventStore.EExIOListEngine) end end