@event-driven-io/emmett-postgresql 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -318,8 +318,8 @@ var streamTransformations = {
318
318
  };
319
319
  var { retry: retry2 } = streamTransformations;
320
320
  var AssertionError = class extends Error {
321
- constructor(message) {
322
- super(message);
321
+ constructor(message2) {
322
+ super(message2);
323
323
  }
324
324
  };
325
325
  var isSubset = (superObj, subObj) => {
@@ -334,37 +334,37 @@ var isSubset = (superObj, subObj) => {
334
334
  return sub[ele] === sup[ele];
335
335
  });
336
336
  };
337
- var assertFails = (message) => {
338
- throw new AssertionError(_nullishCoalesce(message, () => ( "That should not ever happened, right?")));
337
+ var assertFails = (message2) => {
338
+ throw new AssertionError(_nullishCoalesce(message2, () => ( "That should not ever happened, right?")));
339
339
  };
340
- var assertDeepEqual = (actual, expected, message) => {
340
+ var assertDeepEqual = (actual, expected, message2) => {
341
341
  if (!deepEquals(actual, expected))
342
342
  throw new AssertionError(
343
- _nullishCoalesce(message, () => ( `subObj:
343
+ _nullishCoalesce(message2, () => ( `subObj:
344
344
  ${JSONParser.stringify(expected)}
345
345
  is not equal to
346
346
  ${JSONParser.stringify(actual)}`))
347
347
  );
348
348
  };
349
- function assertTrue(condition, message) {
349
+ function assertTrue(condition, message2) {
350
350
  if (condition !== true)
351
- throw new AssertionError(_nullishCoalesce(message, () => ( `Condition is false`)));
351
+ throw new AssertionError(_nullishCoalesce(message2, () => ( `Condition is false`)));
352
352
  }
353
- function assertOk(obj, message) {
354
- if (!obj) throw new AssertionError(_nullishCoalesce(message, () => ( `Condition is not truthy`)));
353
+ function assertOk(obj, message2) {
354
+ if (!obj) throw new AssertionError(_nullishCoalesce(message2, () => ( `Condition is not truthy`)));
355
355
  }
356
- function assertEqual(expected, actual, message) {
356
+ function assertEqual(expected, actual, message2) {
357
357
  if (expected !== actual)
358
358
  throw new AssertionError(
359
- `${_nullishCoalesce(message, () => ( "Objects are not equal"))}:
359
+ `${_nullishCoalesce(message2, () => ( "Objects are not equal"))}:
360
360
  Expected: ${JSONParser.stringify(expected)}
361
361
  Actual: ${JSONParser.stringify(actual)}`
362
362
  );
363
363
  }
364
- function assertNotEqual(obj, other, message) {
364
+ function assertNotEqual(obj, other, message2) {
365
365
  if (obj === other)
366
366
  throw new AssertionError(
367
- _nullishCoalesce(message, () => ( `Objects are equal: ${JSONParser.stringify(obj)}`))
367
+ _nullishCoalesce(message2, () => ( `Objects are equal: ${JSONParser.stringify(obj)}`))
368
368
  );
369
369
  }
370
370
  function assertIsNotNull(result) {
@@ -463,8 +463,8 @@ var streamsTable = {
463
463
  isArchived: columns.isArchived
464
464
  }
465
465
  };
466
- var eventsTable = {
467
- name: `${emmettPrefix}_events`,
466
+ var messagesTable = {
467
+ name: `${emmettPrefix}_messages`,
468
468
  columns: {
469
469
  partition: columns.partition,
470
470
  isArchived: columns.isArchived
@@ -480,7 +480,7 @@ var readLastMessageGlobalPosition = async (execute, options) => {
480
480
  execute.query(
481
481
  _dumbo.sql.call(void 0,
482
482
  `SELECT global_position
483
- FROM ${eventsTable.name}
483
+ FROM ${messagesTable.name}
484
484
  WHERE partition = %L AND is_archived = FALSE AND transaction_id < pg_snapshot_xmin(pg_current_snapshot())
485
485
  ORDER BY transaction_id, global_position
486
486
  LIMIT 1`,
@@ -504,8 +504,8 @@ var readMessagesBatch = async (execute, options) => {
504
504
  const events = await _dumbo.mapRows.call(void 0,
505
505
  execute.query(
506
506
  _dumbo.sql.call(void 0,
507
- `SELECT stream_id, stream_position, global_position, event_data, event_metadata, event_schema_version, event_type, event_id
508
- FROM ${eventsTable.name}
507
+ `SELECT stream_id, stream_position, global_position, message_data, message_metadata, message_schema_version, message_type, message_id
508
+ FROM ${messagesTable.name}
509
509
  WHERE partition = %L AND is_archived = FALSE AND transaction_id < pg_snapshot_xmin(pg_current_snapshot()) ${fromCondition} ${toCondition}
510
510
  ORDER BY transaction_id, global_position
511
511
  ${limitCondition}`,
@@ -514,19 +514,20 @@ var readMessagesBatch = async (execute, options) => {
514
514
  ),
515
515
  (row) => {
516
516
  const rawEvent = {
517
- type: row.event_type,
518
- data: row.event_data,
519
- metadata: row.event_metadata
517
+ type: row.message_type,
518
+ data: row.message_data,
519
+ metadata: row.message_metadata
520
520
  };
521
521
  const metadata = {
522
522
  ..."metadata" in rawEvent ? _nullishCoalesce(rawEvent.metadata, () => ( {})) : {},
523
- eventId: row.event_id,
523
+ messageId: row.message_id,
524
524
  streamName: row.stream_id,
525
525
  streamPosition: BigInt(row.stream_position),
526
526
  globalPosition: BigInt(row.global_position)
527
527
  };
528
528
  return {
529
529
  ...rawEvent,
530
+ kind: "Event",
530
531
  metadata
531
532
  };
532
533
  }
@@ -623,13 +624,14 @@ var zipPostgreSQLEventStoreMessageBatchPullerStartFrom = (options) => {
623
624
 
624
625
 
625
626
 
626
- var appendEventsSQL = _dumbo.rawSql.call(void 0,
627
- `CREATE OR REPLACE FUNCTION emt_append_event(
628
- v_event_ids text[],
629
- v_events_data jsonb[],
630
- v_events_metadata jsonb[],
631
- v_event_schema_versions text[],
632
- v_event_types text[],
627
+ var appendToStreamSQL = _dumbo.rawSql.call(void 0,
628
+ `CREATE OR REPLACE FUNCTION emt_append_to_stream(
629
+ v_message_ids text[],
630
+ v_messages_data jsonb[],
631
+ v_messages_metadata jsonb[],
632
+ v_message_schema_versions text[],
633
+ v_message_types text[],
634
+ v_message_kinds text[],
633
635
  v_stream_id text,
634
636
  v_stream_type text,
635
637
  v_expected_stream_position bigint DEFAULT NULL,
@@ -648,42 +650,15 @@ var appendEventsSQL = _dumbo.rawSql.call(void 0,
648
650
  v_transaction_id xid8;
649
651
  v_last_global_position bigint;
650
652
  BEGIN
653
+ v_transaction_id := pg_current_xact_id();
654
+
651
655
  IF v_expected_stream_position IS NULL THEN
652
656
  SELECT COALESCE(max(stream_position), 0) INTO v_expected_stream_position
653
657
  FROM ${streamsTable.name}
654
658
  WHERE stream_id = v_stream_id AND partition = v_partition;
655
659
  END IF;
656
660
 
657
- v_next_stream_position := v_expected_stream_position + array_upper(v_events_data, 1);
658
- v_transaction_id := pg_current_xact_id();
659
-
660
- WITH ev AS (
661
- SELECT row_number() OVER () + v_expected_stream_position AS stream_position,
662
- event_data,
663
- event_metadata,
664
- schema_version,
665
- event_id,
666
- event_type
667
- FROM (
668
- SELECT *
669
- FROM
670
- unnest(v_event_ids, v_events_data, v_events_metadata, v_event_schema_versions, v_event_types)
671
- AS event(event_id, event_data, event_metadata, schema_version, event_type)
672
- ) AS event
673
- ),
674
- all_events_insert AS (
675
- INSERT INTO ${eventsTable.name}
676
- (stream_id, stream_position, partition, event_data, event_metadata, event_schema_version, event_type, event_id, transaction_id)
677
- SELECT
678
- v_stream_id, ev.stream_position, v_partition, ev.event_data, ev.event_metadata, ev.schema_version, ev.event_type, ev.event_id, v_transaction_id
679
- FROM ev
680
- RETURNING global_position
681
- )
682
- SELECT
683
- max(global_position) INTO v_last_global_position
684
- FROM
685
- all_events_insert;
686
-
661
+ v_next_stream_position := v_expected_stream_position + array_upper(v_messages_data, 1);
687
662
 
688
663
  IF v_expected_stream_position = 0 THEN
689
664
  INSERT INTO ${streamsTable.name}
@@ -703,25 +678,54 @@ var appendEventsSQL = _dumbo.rawSql.call(void 0,
703
678
  END IF;
704
679
  END IF;
705
680
 
681
+ WITH ev AS (
682
+ SELECT row_number() OVER () + v_expected_stream_position AS stream_position,
683
+ message_data,
684
+ message_metadata,
685
+ schema_version,
686
+ message_id,
687
+ message_type,
688
+ message_kind
689
+ FROM (
690
+ SELECT *
691
+ FROM
692
+ unnest(v_message_ids, v_messages_data, v_messages_metadata, v_message_schema_versions, v_message_types, v_message_kinds)
693
+ AS message(message_id, message_data, message_metadata, schema_version, message_type, message_kind)
694
+ ) AS message
695
+ ),
696
+ all_messages_insert AS (
697
+ INSERT INTO ${messagesTable.name}
698
+ (stream_id, stream_position, partition, message_data, message_metadata, message_schema_version, message_type, message_kind, message_id, transaction_id)
699
+ SELECT
700
+ v_stream_id, ev.stream_position, v_partition, ev.message_data, ev.message_metadata, ev.schema_version, ev.message_type, ev.message_kind, ev.message_id, v_transaction_id
701
+ FROM ev
702
+ RETURNING global_position
703
+ )
704
+ SELECT
705
+ max(global_position) INTO v_last_global_position
706
+ FROM
707
+ all_messages_insert;
708
+
706
709
  RETURN QUERY SELECT TRUE, v_next_stream_position, v_last_global_position, v_transaction_id;
707
710
  END;
708
711
  $$;
709
712
  `
710
713
  );
711
- var appendToStream = (pool, streamName, streamType, events, options) => pool.withTransaction(async (transaction) => {
714
+ var appendToStream = (pool, streamName, streamType, messages, options) => pool.withTransaction(async (transaction) => {
712
715
  const { execute } = transaction;
713
- if (events.length === 0)
716
+ if (messages.length === 0)
714
717
  return { success: false, result: { success: false } };
715
718
  let appendResult;
716
719
  try {
717
720
  const expectedStreamVersion = toExpectedVersion(
718
721
  _optionalChain([options, 'optionalAccess', _19 => _19.expectedStreamVersion])
719
722
  );
720
- const eventsToAppend = events.map((e, i) => ({
723
+ const messagesToAppend = messages.map((e, i) => ({
721
724
  ...e,
725
+ kind: _nullishCoalesce(e.kind, () => ( "Event")),
722
726
  metadata: {
723
727
  streamName,
724
- eventId: _uuid.v4.call(void 0, ),
728
+ messageId: _uuid.v4.call(void 0, ),
725
729
  streamPosition: BigInt(i),
726
730
  ..."metadata" in e ? _nullishCoalesce(e.metadata, () => ( {})) : {}
727
731
  }
@@ -730,13 +734,13 @@ var appendToStream = (pool, streamName, streamType, events, options) => pool.wit
730
734
  execute,
731
735
  streamName,
732
736
  streamType,
733
- eventsToAppend,
737
+ messagesToAppend,
734
738
  {
735
739
  expectedStreamVersion
736
740
  }
737
741
  );
738
742
  if (_optionalChain([options, 'optionalAccess', _20 => _20.preCommitHook]))
739
- await options.preCommitHook(eventsToAppend, { transaction });
743
+ await options.preCommitHook(messagesToAppend, { transaction });
740
744
  } catch (error) {
741
745
  if (!isOptimisticConcurrencyError(error)) throw error;
742
746
  appendResult = {
@@ -770,25 +774,27 @@ var toExpectedVersion = (expected) => {
770
774
  return expected;
771
775
  };
772
776
  var isOptimisticConcurrencyError = (error) => error instanceof Error && "code" in error && error.code === "23505";
773
- var appendEventsRaw = (execute, streamId, streamType, events, options) => _dumbo.single.call(void 0,
777
+ var appendEventsRaw = (execute, streamId, streamType, messages, options) => _dumbo.single.call(void 0,
774
778
  execute.command(
775
779
  _dumbo.sql.call(void 0,
776
- `SELECT * FROM emt_append_event(
780
+ `SELECT * FROM emt_append_to_stream(
777
781
  ARRAY[%s]::text[],
778
782
  ARRAY[%s]::jsonb[],
779
783
  ARRAY[%s]::jsonb[],
780
784
  ARRAY[%s]::text[],
781
785
  ARRAY[%s]::text[],
786
+ ARRAY[%s]::text[],
782
787
  %L::text,
783
788
  %L::text,
784
789
  %s::bigint,
785
790
  %L::text
786
791
  )`,
787
- events.map((e) => _dumbo.sql.call(void 0, "%L", e.metadata.eventId)).join(","),
788
- events.map((e) => _dumbo.sql.call(void 0, "%L", JSONParser.stringify(e.data))).join(","),
789
- events.map((e) => _dumbo.sql.call(void 0, "%L", JSONParser.stringify(_nullishCoalesce(e.metadata, () => ( {}))))).join(","),
790
- events.map(() => `'1'`).join(","),
791
- events.map((e) => _dumbo.sql.call(void 0, "%L", e.type)).join(","),
792
+ messages.map((e) => _dumbo.sql.call(void 0, "%L", e.metadata.messageId)).join(","),
793
+ messages.map((e) => _dumbo.sql.call(void 0, "%L", JSONParser.stringify(e.data))).join(","),
794
+ messages.map((e) => _dumbo.sql.call(void 0, "%L", JSONParser.stringify(_nullishCoalesce(e.metadata, () => ( {}))))).join(","),
795
+ messages.map(() => `'1'`).join(","),
796
+ messages.map((e) => _dumbo.sql.call(void 0, "%L", e.type)).join(","),
797
+ messages.map((e) => _dumbo.sql.call(void 0, "%L", e.kind === "Event" ? "E" : "C")).join(","),
792
798
  streamId,
793
799
  streamType,
794
800
  _nullishCoalesce(_optionalChain([options, 'optionalAccess', _21 => _21.expectedStreamVersion]), () => ( "NULL")),
@@ -886,7 +892,7 @@ var streamsTableSQL = _dumbo.rawSql.call(void 0,
886
892
  `CREATE TABLE IF NOT EXISTS ${streamsTable.name}(
887
893
  stream_id TEXT NOT NULL,
888
894
  stream_position BIGINT NOT NULL,
889
- partition TEXT NOT NULL DEFAULT '${globalTag}__${globalTag}',
895
+ partition TEXT NOT NULL DEFAULT '${globalTag}',
890
896
  stream_type TEXT NOT NULL,
891
897
  stream_metadata JSONB NOT NULL,
892
898
  is_archived BOOLEAN NOT NULL DEFAULT FALSE,
@@ -894,21 +900,22 @@ var streamsTableSQL = _dumbo.rawSql.call(void 0,
894
900
  UNIQUE (stream_id, partition, is_archived)
895
901
  ) PARTITION BY LIST (partition);`
896
902
  );
897
- var eventsTableSQL = _dumbo.rawSql.call(void 0,
903
+ var messagesTableSQL = _dumbo.rawSql.call(void 0,
898
904
  `
899
- CREATE SEQUENCE IF NOT EXISTS emt_global_event_position;
905
+ CREATE SEQUENCE IF NOT EXISTS emt_global_message_position;
900
906
 
901
- CREATE TABLE IF NOT EXISTS ${eventsTable.name}(
907
+ CREATE TABLE IF NOT EXISTS ${messagesTable.name}(
902
908
  stream_id TEXT NOT NULL,
903
909
  stream_position BIGINT NOT NULL,
904
910
  partition TEXT NOT NULL DEFAULT '${globalTag}',
905
- event_data JSONB NOT NULL,
906
- event_metadata JSONB NOT NULL,
907
- event_schema_version TEXT NOT NULL,
908
- event_type TEXT NOT NULL,
909
- event_id TEXT NOT NULL,
911
+ message_kind CHAR(1) NOT NULL DEFAULT 'E',
912
+ message_data JSONB NOT NULL,
913
+ message_metadata JSONB NOT NULL,
914
+ message_schema_version TEXT NOT NULL,
915
+ message_type TEXT NOT NULL,
916
+ message_id TEXT NOT NULL,
910
917
  is_archived BOOLEAN NOT NULL DEFAULT FALSE,
911
- global_position BIGINT DEFAULT nextval('emt_global_event_position'),
918
+ global_position BIGINT DEFAULT nextval('emt_global_message_position'),
912
919
  transaction_id XID8 NOT NULL,
913
920
  created TIMESTAMPTZ NOT NULL DEFAULT now(),
914
921
  PRIMARY KEY (stream_id, stream_position, partition, is_archived)
@@ -919,7 +926,7 @@ var subscriptionsTableSQL = _dumbo.rawSql.call(void 0,
919
926
  CREATE TABLE IF NOT EXISTS ${subscriptionsTable.name}(
920
927
  subscription_id TEXT NOT NULL,
921
928
  version INT NOT NULL DEFAULT 1,
922
- partition TEXT NOT NULL DEFAULT '${globalTag}__${globalTag}',
929
+ partition TEXT NOT NULL DEFAULT '${globalTag}',
923
930
  last_processed_position BIGINT NOT NULL,
924
931
  last_processed_transaction_id XID8 NOT NULL,
925
932
  PRIMARY KEY (subscription_id, partition, version)
@@ -967,11 +974,11 @@ var addTablePartitions = _dumbo.rawSql.call(void 0,
967
974
  END;
968
975
  $$ LANGUAGE plpgsql;`
969
976
  );
970
- var addEventsPartitions = _dumbo.rawSql.call(void 0,
977
+ var addPartitionSQL = _dumbo.rawSql.call(void 0,
971
978
  `
972
979
  CREATE OR REPLACE FUNCTION emt_add_partition(partition_name TEXT) RETURNS void AS $$
973
980
  BEGIN
974
- PERFORM emt_add_table_partition('${eventsTable.name}', partition_name);
981
+ PERFORM emt_add_table_partition('${messagesTable.name}', partition_name);
975
982
  PERFORM emt_add_table_partition('${streamsTable.name}', partition_name);
976
983
 
977
984
  EXECUTE format('
@@ -986,23 +993,23 @@ var addModuleSQL = _dumbo.rawSql.call(void 0,
986
993
  `
987
994
  CREATE OR REPLACE FUNCTION add_module(new_module TEXT) RETURNS void AS $$
988
995
  BEGIN
989
- -- For ${eventsTable.name} table
996
+ -- For ${messagesTable.name} table
990
997
  EXECUTE format('
991
998
  CREATE TABLE IF NOT EXISTS %I PARTITION OF %I
992
999
  FOR VALUES IN (emt_sanitize_name(%L || ''__'' || %L)) PARTITION BY LIST (is_archived);',
993
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || '${globalTag}'), '${eventsTable.name}', new_module, '${globalTag}'
1000
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || '${globalTag}'), '${messagesTable.name}', new_module, '${globalTag}'
994
1001
  );
995
1002
 
996
1003
  EXECUTE format('
997
1004
  CREATE TABLE IF NOT EXISTS %I_active PARTITION OF %I
998
1005
  FOR VALUES IN (FALSE);',
999
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || '${globalTag}' || '_active'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || '${globalTag}')
1006
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || '${globalTag}' || '_active'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || '${globalTag}')
1000
1007
  );
1001
1008
 
1002
1009
  EXECUTE format('
1003
1010
  CREATE TABLE IF NOT EXISTS %I_archived PARTITION OF %I
1004
1011
  FOR VALUES IN (TRUE);',
1005
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || '${globalTag}' || '_archived'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || '${globalTag}')
1012
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || '${globalTag}' || '_archived'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || '${globalTag}')
1006
1013
  );
1007
1014
 
1008
1015
  -- For ${streamsTable.name} table
@@ -1031,23 +1038,23 @@ var addTenantSQL = _dumbo.rawSql.call(void 0,
1031
1038
  `
1032
1039
  CREATE OR REPLACE FUNCTION add_tenant(new_module TEXT, new_tenant TEXT) RETURNS void AS $$
1033
1040
  BEGIN
1034
- -- For ${eventsTable.name} table
1041
+ -- For ${messagesTable.name} table
1035
1042
  EXECUTE format('
1036
1043
  CREATE TABLE IF NOT EXISTS %I PARTITION OF %I
1037
1044
  FOR VALUES IN (emt_sanitize_name(''%s__%s'')) PARTITION BY LIST (is_archived);',
1038
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || new_tenant), '${eventsTable.name}', new_module, new_tenant
1045
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || new_tenant), '${messagesTable.name}', new_module, new_tenant
1039
1046
  );
1040
1047
 
1041
1048
  EXECUTE format('
1042
1049
  CREATE TABLE IF NOT EXISTS %I_active PARTITION OF %I
1043
1050
  FOR VALUES IN (FALSE);',
1044
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || new_tenant || '_active'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || new_tenant)
1051
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || new_tenant || '_active'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || new_tenant)
1045
1052
  );
1046
1053
 
1047
1054
  EXECUTE format('
1048
1055
  CREATE TABLE IF NOT EXISTS %I_archived PARTITION OF %I
1049
1056
  FOR VALUES IN (TRUE);',
1050
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || new_tenant || '_archived'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || new_tenant)
1057
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || new_tenant || '_archived'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || new_tenant)
1051
1058
  );
1052
1059
 
1053
1060
  -- For ${streamsTable.name} table
@@ -1080,25 +1087,25 @@ var addModuleForAllTenantsSQL = _dumbo.rawSql.call(void 0,
1080
1087
  BEGIN
1081
1088
  PERFORM add_module(new_module);
1082
1089
 
1083
- FOR tenant_record IN SELECT DISTINCT tenant FROM ${eventsTable.name}
1090
+ FOR tenant_record IN SELECT DISTINCT tenant FROM ${messagesTable.name}
1084
1091
  LOOP
1085
- -- For ${eventsTable.name} table
1092
+ -- For ${messagesTable.name} table
1086
1093
  EXECUTE format('
1087
1094
  CREATE TABLE IF NOT EXISTS %I PARTITION OF %I
1088
1095
  FOR VALUES IN (emt_sanitize_name(''%s__%s'')) PARTITION BY LIST (is_archived);',
1089
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || tenant_record.tenant), '${eventsTable.name}', new_module, tenant_record.tenant
1096
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || tenant_record.tenant), '${messagesTable.name}', new_module, tenant_record.tenant
1090
1097
  );
1091
1098
 
1092
1099
  EXECUTE format('
1093
1100
  CREATE TABLE IF NOT EXISTS %I_active PARTITION OF %I
1094
1101
  FOR VALUES IN (FALSE);',
1095
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || tenant_record.tenant || '_active'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || tenant_record.tenant)
1102
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || tenant_record.tenant || '_active'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || tenant_record.tenant)
1096
1103
  );
1097
1104
 
1098
1105
  EXECUTE format('
1099
1106
  CREATE TABLE IF NOT EXISTS %I_archived PARTITION OF %I
1100
1107
  FOR VALUES IN (TRUE);',
1101
- emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || tenant_record.tenant || '_archived'), emt_sanitize_name('${eventsTable.name}_' || new_module || '__' || tenant_record.tenant)
1108
+ emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || tenant_record.tenant || '_archived'), emt_sanitize_name('${messagesTable.name}_' || new_module || '__' || tenant_record.tenant)
1102
1109
  );
1103
1110
 
1104
1111
  -- For ${streamsTable.name} table
@@ -1130,25 +1137,25 @@ var addTenantForAllModulesSQL = _dumbo.rawSql.call(void 0,
1130
1137
  DECLARE
1131
1138
  module_record RECORD;
1132
1139
  BEGIN
1133
- FOR module_record IN SELECT DISTINCT partitionname FROM pg_partman.part_config WHERE parent_table = '${eventsTable.name}'
1140
+ FOR module_record IN SELECT DISTINCT partitionname FROM pg_partman.part_config WHERE parent_table = '${messagesTable.name}'
1134
1141
  LOOP
1135
- -- For ${eventsTable.name} table
1142
+ -- For ${messagesTable.name} table
1136
1143
  EXECUTE format('
1137
1144
  CREATE TABLE IF NOT EXISTS %I PARTITION OF %I
1138
1145
  FOR VALUES IN (emt_sanitize_name(''%s__%s'')) PARTITION BY LIST (is_archived);',
1139
- emt_sanitize_name('${eventsTable.name}_' || module_record.partitionname || '__' || new_tenant), '${eventsTable.name}', module_record.partitionname, new_tenant
1146
+ emt_sanitize_name('${messagesTable.name}_' || module_record.partitionname || '__' || new_tenant), '${messagesTable.name}', module_record.partitionname, new_tenant
1140
1147
  );
1141
1148
 
1142
1149
  EXECUTE format('
1143
1150
  CREATE TABLE IF NOT EXISTS %I_active PARTITION OF %I
1144
1151
  FOR VALUES IN (FALSE);',
1145
- emt_sanitize_name('${eventsTable.name}_' || module_record.partitionname || '__' || new_tenant || '_active'), emt_sanitize_name('${eventsTable.name}_' || module_record.partitionname || '__' || new_tenant)
1152
+ emt_sanitize_name('${messagesTable.name}_' || module_record.partitionname || '__' || new_tenant || '_active'), emt_sanitize_name('${messagesTable.name}_' || module_record.partitionname || '__' || new_tenant)
1146
1153
  );
1147
1154
 
1148
1155
  EXECUTE format('
1149
1156
  CREATE TABLE IF NOT EXISTS %I_archived PARTITION OF %I
1150
1157
  FOR VALUES IN (TRUE);',
1151
- emt_sanitize_name('${eventsTable.name}_' || module_record.partitionname || '__' || new_tenant || '_archived'), emt_sanitize_name('${eventsTable.name}_' || module_record.partitionname || '__' || new_tenant)
1158
+ emt_sanitize_name('${messagesTable.name}_' || module_record.partitionname || '__' || new_tenant || '_archived'), emt_sanitize_name('${messagesTable.name}_' || module_record.partitionname || '__' || new_tenant)
1152
1159
  );
1153
1160
 
1154
1161
  -- For ${streamsTable.name} table
@@ -1174,9 +1181,76 @@ var addTenantForAllModulesSQL = _dumbo.rawSql.call(void 0,
1174
1181
  $$ LANGUAGE plpgsql;
1175
1182
  `
1176
1183
  );
1177
- var addDefaultPartition = _dumbo.rawSql.call(void 0,
1184
+ var addDefaultPartitionSQL = _dumbo.rawSql.call(void 0,
1178
1185
  `SELECT emt_add_partition('${defaultTag}');`
1179
1186
  );
1187
+ var migrationFromEventsToMessagesSQL = _dumbo.rawSql.call(void 0, `
1188
+ DO $$
1189
+ DECLARE
1190
+ partition_record RECORD;
1191
+ BEGIN
1192
+ -- Rename the main table and its columns if it exists
1193
+ IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'emt_events') THEN
1194
+ -- Rename all partitions first
1195
+ FOR partition_record IN
1196
+ SELECT tablename
1197
+ FROM pg_tables
1198
+ WHERE tablename LIKE 'emt_events_%'
1199
+ ORDER BY tablename DESC -- to handle child partitions first
1200
+ LOOP
1201
+ EXECUTE format('ALTER TABLE %I RENAME TO %I',
1202
+ partition_record.tablename,
1203
+ REPLACE(partition_record.tablename, 'events', 'messages'));
1204
+ END LOOP;
1205
+
1206
+ -- Rename the main table
1207
+ ALTER TABLE emt_events RENAME TO emt_messages;
1208
+
1209
+ -- Rename columns
1210
+ ALTER TABLE emt_messages
1211
+ RENAME COLUMN event_data TO message_data;
1212
+ ALTER TABLE emt_messages
1213
+ RENAME COLUMN event_metadata TO message_metadata;
1214
+ ALTER TABLE emt_messages
1215
+ RENAME COLUMN event_schema_version TO message_schema_version;
1216
+ ALTER TABLE emt_messages
1217
+ RENAME COLUMN event_type TO message_type;
1218
+ ALTER TABLE emt_messages
1219
+ RENAME COLUMN event_id TO message_id;
1220
+ ALTER TABLE emt_messages
1221
+ ADD COLUMN message_kind CHAR(1) NOT NULL DEFAULT 'E';
1222
+
1223
+ -- Rename sequence if it exists
1224
+ IF EXISTS (SELECT 1 FROM pg_sequences WHERE sequencename = 'emt_global_event_position') THEN
1225
+ ALTER SEQUENCE emt_global_event_position
1226
+ RENAME TO emt_global_message_position;
1227
+
1228
+ ALTER TABLE emt_messages
1229
+ ALTER COLUMN global_position
1230
+ SET DEFAULT nextval('emt_global_message_position');
1231
+ END IF;
1232
+ END IF;
1233
+ END $$;`);
1234
+
1235
+ // src/eventStore/schema/readProcessorCheckpoint.ts
1236
+
1237
+ var readProcessorCheckpoint = async (execute, options) => {
1238
+ const result = await _dumbo.singleOrNull.call(void 0,
1239
+ execute.query(
1240
+ _dumbo.sql.call(void 0,
1241
+ `SELECT last_processed_position
1242
+ FROM ${subscriptionsTable.name}
1243
+ WHERE partition = %L AND subscription_id = %L
1244
+ LIMIT 1`,
1245
+ _nullishCoalesce(_optionalChain([options, 'optionalAccess', _23 => _23.partition]), () => ( defaultTag)),
1246
+ options.processorId
1247
+ )
1248
+ )
1249
+ );
1250
+ return {
1251
+ lastProcessedPosition: result !== null ? BigInt(result.last_processed_position) : null
1252
+ };
1253
+ };
1180
1254
 
1181
1255
  // src/eventStore/schema/readStream.ts
1182
1256
 
@@ -1189,28 +1263,29 @@ var readStream = async (execute, streamId, options) => {
1189
1263
  const events = await _dumbo.mapRows.call(void 0,
1190
1264
  execute.query(
1191
1265
  _dumbo.sql.call(void 0,
1192
- `SELECT stream_id, stream_position, global_position, event_data, event_metadata, event_schema_version, event_type, event_id
1193
- FROM ${eventsTable.name}
1266
+ `SELECT stream_id, stream_position, global_position, message_data, message_metadata, message_schema_version, message_type, message_id
1267
+ FROM ${messagesTable.name}
1194
1268
  WHERE stream_id = %L AND partition = %L AND is_archived = FALSE ${fromCondition} ${toCondition}`,
1195
1269
  streamId,
1196
- _nullishCoalesce(_optionalChain([options, 'optionalAccess', _23 => _23.partition]), () => ( defaultTag))
1270
+ _nullishCoalesce(_optionalChain([options, 'optionalAccess', _24 => _24.partition]), () => ( defaultTag))
1197
1271
  )
1198
1272
  ),
1199
1273
  (row) => {
1200
1274
  const rawEvent = {
1201
- type: row.event_type,
1202
- data: row.event_data,
1203
- metadata: row.event_metadata
1275
+ type: row.message_type,
1276
+ data: row.message_data,
1277
+ metadata: row.message_metadata
1204
1278
  };
1205
1279
  const metadata = {
1206
1280
  ..."metadata" in rawEvent ? _nullishCoalesce(rawEvent.metadata, () => ( {})) : {},
1207
- eventId: row.event_id,
1281
+ messageId: row.message_id,
1208
1282
  streamName: streamId,
1209
1283
  streamPosition: BigInt(row.stream_position),
1210
1284
  globalPosition: BigInt(row.global_position)
1211
1285
  };
1212
1286
  return {
1213
1287
  ...rawEvent,
1288
+ kind: "Event",
1214
1289
  metadata
1215
1290
  };
1216
1291
  }
@@ -1226,40 +1301,21 @@ var readStream = async (execute, streamId, options) => {
1226
1301
  };
1227
1302
  };
1228
1303
 
1229
- // src/eventStore/schema/readProcessorCheckpoint.ts
1230
-
1231
- var readProcessorCheckpoint = async (execute, options) => {
1232
- const result = await _dumbo.singleOrNull.call(void 0,
1233
- execute.query(
1234
- _dumbo.sql.call(void 0,
1235
- `SELECT last_processed_position
1236
- FROM ${subscriptionsTable.name}
1237
- WHERE partition = %L AND subscription_id = %L
1238
- LIMIT 1`,
1239
- _nullishCoalesce(_optionalChain([options, 'optionalAccess', _24 => _24.partition]), () => ( defaultTag)),
1240
- options.processorId
1241
- )
1242
- )
1243
- );
1244
- return {
1245
- lastProcessedPosition: result !== null ? BigInt(result.last_processed_position) : null
1246
- };
1247
- };
1248
-
1249
1304
  // src/eventStore/schema/index.ts
1250
1305
  var schemaSQL = [
1306
+ migrationFromEventsToMessagesSQL,
1251
1307
  streamsTableSQL,
1252
- eventsTableSQL,
1308
+ messagesTableSQL,
1253
1309
  subscriptionsTableSQL,
1254
1310
  sanitizeNameSQL,
1255
1311
  addTablePartitions,
1256
- addEventsPartitions,
1312
+ addPartitionSQL,
1257
1313
  addModuleSQL,
1258
1314
  addTenantSQL,
1259
1315
  addModuleForAllTenantsSQL,
1260
1316
  addTenantForAllModulesSQL,
1261
- appendEventsSQL,
1262
- addDefaultPartition,
1317
+ appendToStreamSQL,
1318
+ addDefaultPartitionSQL,
1263
1319
  storeSubscriptionCheckpointSQL
1264
1320
  ];
1265
1321
  var createEventStoreSchema = async (pool) => {
@@ -1675,10 +1731,11 @@ var PostgreSQLProjectionSpec = {
1675
1731
  globalPosition: ++globalPosition,
1676
1732
  streamPosition: globalPosition,
1677
1733
  streamName: `test-${_uuid.v4.call(void 0, )}`,
1678
- eventId: _uuid.v4.call(void 0, )
1734
+ messageId: _uuid.v4.call(void 0, )
1679
1735
  };
1680
1736
  allEvents.push({
1681
1737
  ...event,
1738
+ kind: "Event",
1682
1739
  metadata: {
1683
1740
  ...metadata,
1684
1741
  ..."metadata" in event ? _nullishCoalesce(event.metadata, () => ( {})) : {}
@@ -1992,5 +2049,6 @@ var getPostgreSQLEventStore = (connectionString, options = defaultPostgreSQLOpti
1992
2049
 
1993
2050
 
1994
2051
 
1995
- exports.DefaultPostgreSQLEventStoreProcessorBatchSize = DefaultPostgreSQLEventStoreProcessorBatchSize; exports.DefaultPostgreSQLEventStoreProcessorPullingFrequencyInMs = DefaultPostgreSQLEventStoreProcessorPullingFrequencyInMs; exports.PostgreSQLEventStoreDefaultStreamVersion = PostgreSQLEventStoreDefaultStreamVersion; exports.PostgreSQLProcessor = PostgreSQLProcessor; exports.PostgreSQLProjectionSpec = PostgreSQLProjectionSpec; exports.addDefaultPartition = addDefaultPartition; exports.addEventsPartitions = addEventsPartitions; exports.addModuleForAllTenantsSQL = addModuleForAllTenantsSQL; exports.addModuleSQL = addModuleSQL; exports.addTablePartitions = addTablePartitions; exports.addTenantForAllModulesSQL = addTenantForAllModulesSQL; exports.addTenantSQL = addTenantSQL; exports.appendEventsSQL = appendEventsSQL; exports.appendToStream = appendToStream; exports.assertSQLQueryResultMatches = assertSQLQueryResultMatches; exports.createEventStoreSchema = createEventStoreSchema; exports.defaultPostgreSQLOptions = defaultPostgreSQLOptions; exports.defaultTag = defaultTag; exports.documentDoesNotExist = documentDoesNotExist; exports.documentExists = documentExists; exports.documentMatchingExists = documentMatchingExists; exports.documentsAreTheSame = documentsAreTheSame; exports.documentsMatchingHaveCount = documentsMatchingHaveCount; exports.emmettPrefix = emmettPrefix; exports.eventInStream = eventInStream; exports.eventsInStream = eventsInStream; exports.eventsTable = eventsTable; exports.eventsTableSQL = eventsTableSQL; exports.expectPongoDocuments = expectPongoDocuments; exports.expectSQL = expectSQL; exports.getPostgreSQLEventStore = getPostgreSQLEventStore; exports.globalNames = globalNames; exports.globalTag = globalTag; exports.handleProjections = handleProjections; exports.newEventsInStream = newEventsInStream; exports.pongoMultiStreamProjection = pongoMultiStreamProjection; exports.pongoProjection = pongoProjection; exports.pongoSingleStreamProjection = pongoSingleStreamProjection; exports.postgreSQLEventStoreConsumer = postgreSQLEventStoreConsumer; exports.postgreSQLEventStoreMessageBatchPuller = postgreSQLEventStoreMessageBatchPuller; exports.postgreSQLProcessor = postgreSQLProcessor; exports.postgreSQLProjection = postgreSQLProjection; exports.postgreSQLProjectionProcessor = postgreSQLProjectionProcessor; exports.postgreSQLRawBatchSQLProjection = postgreSQLRawBatchSQLProjection; exports.postgreSQLRawSQLProjection = postgreSQLRawSQLProjection; exports.readLastMessageGlobalPosition = readLastMessageGlobalPosition; exports.readMessagesBatch = readMessagesBatch; exports.readProcessorCheckpoint = readProcessorCheckpoint; exports.readStream = readStream; exports.sanitizeNameSQL = sanitizeNameSQL; exports.schemaSQL = schemaSQL; exports.storeProcessorCheckpoint = storeProcessorCheckpoint; exports.storeSubscriptionCheckpointSQL = storeSubscriptionCheckpointSQL; exports.streamsTable = streamsTable; exports.streamsTableSQL = streamsTableSQL; exports.subscriptionsTable = subscriptionsTable; exports.subscriptionsTableSQL = subscriptionsTableSQL; exports.zipPostgreSQLEventStoreMessageBatchPullerStartFrom = zipPostgreSQLEventStoreMessageBatchPullerStartFrom;
2052
+
2053
+ exports.DefaultPostgreSQLEventStoreProcessorBatchSize = DefaultPostgreSQLEventStoreProcessorBatchSize; exports.DefaultPostgreSQLEventStoreProcessorPullingFrequencyInMs = DefaultPostgreSQLEventStoreProcessorPullingFrequencyInMs; exports.PostgreSQLEventStoreDefaultStreamVersion = PostgreSQLEventStoreDefaultStreamVersion; exports.PostgreSQLProcessor = PostgreSQLProcessor; exports.PostgreSQLProjectionSpec = PostgreSQLProjectionSpec; exports.addDefaultPartitionSQL = addDefaultPartitionSQL; exports.addModuleForAllTenantsSQL = addModuleForAllTenantsSQL; exports.addModuleSQL = addModuleSQL; exports.addPartitionSQL = addPartitionSQL; exports.addTablePartitions = addTablePartitions; exports.addTenantForAllModulesSQL = addTenantForAllModulesSQL; exports.addTenantSQL = addTenantSQL; exports.appendToStream = appendToStream; exports.appendToStreamSQL = appendToStreamSQL; exports.assertSQLQueryResultMatches = assertSQLQueryResultMatches; exports.createEventStoreSchema = createEventStoreSchema; exports.defaultPostgreSQLOptions = defaultPostgreSQLOptions; exports.defaultTag = defaultTag; exports.documentDoesNotExist = documentDoesNotExist; exports.documentExists = documentExists; exports.documentMatchingExists = documentMatchingExists; exports.documentsAreTheSame = documentsAreTheSame; exports.documentsMatchingHaveCount = documentsMatchingHaveCount; exports.emmettPrefix = emmettPrefix; exports.eventInStream = eventInStream; exports.eventsInStream = eventsInStream; exports.expectPongoDocuments = expectPongoDocuments; exports.expectSQL = expectSQL; exports.getPostgreSQLEventStore = getPostgreSQLEventStore; exports.globalNames = globalNames; exports.globalTag = globalTag; exports.handleProjections = handleProjections; exports.messagesTable = messagesTable; exports.messagesTableSQL = messagesTableSQL; exports.migrationFromEventsToMessagesSQL = migrationFromEventsToMessagesSQL; exports.newEventsInStream = newEventsInStream; exports.pongoMultiStreamProjection = pongoMultiStreamProjection; exports.pongoProjection = pongoProjection; exports.pongoSingleStreamProjection = pongoSingleStreamProjection; exports.postgreSQLEventStoreConsumer = postgreSQLEventStoreConsumer; exports.postgreSQLEventStoreMessageBatchPuller = postgreSQLEventStoreMessageBatchPuller; exports.postgreSQLProcessor = postgreSQLProcessor; exports.postgreSQLProjection = postgreSQLProjection; exports.postgreSQLProjectionProcessor = postgreSQLProjectionProcessor; exports.postgreSQLRawBatchSQLProjection = postgreSQLRawBatchSQLProjection; exports.postgreSQLRawSQLProjection = postgreSQLRawSQLProjection; exports.readLastMessageGlobalPosition = readLastMessageGlobalPosition; exports.readMessagesBatch = readMessagesBatch; exports.readProcessorCheckpoint = readProcessorCheckpoint; exports.readStream = readStream; exports.sanitizeNameSQL = sanitizeNameSQL; exports.schemaSQL = schemaSQL; exports.storeProcessorCheckpoint = storeProcessorCheckpoint; exports.storeSubscriptionCheckpointSQL = storeSubscriptionCheckpointSQL; exports.streamsTable = streamsTable; exports.streamsTableSQL = streamsTableSQL; exports.subscriptionsTable = subscriptionsTable; exports.subscriptionsTableSQL = subscriptionsTableSQL; exports.zipPostgreSQLEventStoreMessageBatchPullerStartFrom = zipPostgreSQLEventStoreMessageBatchPullerStartFrom;
1996
2054
  //# sourceMappingURL=index.cjs.map