Module: EventStoreRuby::Postgres::InsertBuilder
- Defined in:
- lib/eventstore_ruby/postgres/insert.rb
Class Method Summary collapse
-
.build_cte_insert_query(filter, expected_max_seq) ⇒ Object
Returns [sql, params].
Class Method Details
.build_cte_insert_query(filter, expected_max_seq) ⇒ Object
Returns [sql, params]
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/eventstore_ruby/postgres/insert.rb', line 7 def build_cte_insert_query(filter, expected_max_seq) version_sql, version_params = QueryBuilder.build_context_version_query(filter) context_param_count = version_params.length event_types_param = context_param_count + 1 payloads_param = context_param_count + 2 sql = " WITH context AS (\n SELECT MAX(sequence_number) AS max_seq\n FROM events\n WHERE \#{version_sql}\n )\n INSERT INTO events (event_type, payload)\n SELECT unnest($\#{event_types_param}::text[]), unnest($\#{payloads_param}::jsonb[])\n FROM context\n WHERE COALESCE(max_seq, 0) = \#{expected_max_seq}\n RETURNING *\n SQL\n\n [sql, version_params]\nend\n" |