@contember/engine-system-api 1.2.1 → 1.3.0-alpha.13

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.
Files changed (221) hide show
  1. package/dist/src/SystemContainer.d.ts +5 -12
  2. package/dist/src/SystemContainer.d.ts.map +1 -1
  3. package/dist/src/SystemContainer.js +4 -7
  4. package/dist/src/SystemContainer.js.map +1 -1
  5. package/dist/src/bin/runMigrations.d.ts +2 -0
  6. package/dist/src/bin/runMigrations.d.ts.map +1 -0
  7. package/dist/src/bin/runMigrations.js +34 -0
  8. package/dist/src/bin/runMigrations.js.map +1 -0
  9. package/dist/src/index.d.ts +1 -1
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/index.js +2 -3
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/migrations/2018-08-04-102200-init.d.ts +3 -0
  14. package/dist/src/migrations/2018-08-04-102200-init.d.ts.map +1 -0
  15. package/dist/src/migrations/2018-08-04-102200-init.js +37 -0
  16. package/dist/src/migrations/2018-08-04-102200-init.js.map +1 -0
  17. package/dist/src/migrations/2018-08-05-130501-trigger-event-function.d.ts +3 -0
  18. package/dist/src/migrations/2018-08-05-130501-trigger-event-function.d.ts.map +1 -0
  19. package/dist/src/migrations/2018-08-05-130501-trigger-event-function.js +99 -0
  20. package/dist/src/migrations/2018-08-05-130501-trigger-event-function.js.map +1 -0
  21. package/dist/src/migrations/2019-01-14-143432-event-trx-id.d.ts +3 -0
  22. package/dist/src/migrations/2019-01-14-143432-event-trx-id.d.ts.map +1 -0
  23. package/dist/src/migrations/2019-01-14-143432-event-trx-id.js +17 -0
  24. package/dist/src/migrations/2019-01-14-143432-event-trx-id.js.map +1 -0
  25. package/dist/src/migrations/2019-02-04-154500-event-rebase.d.ts +3 -0
  26. package/dist/src/migrations/2019-02-04-154500-event-rebase.d.ts.map +1 -0
  27. package/dist/src/migrations/2019-02-04-154500-event-rebase.js +59 -0
  28. package/dist/src/migrations/2019-02-04-154500-event-rebase.js.map +1 -0
  29. package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.d.ts +3 -0
  30. package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.d.ts.map +1 -0
  31. package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.js +12 -0
  32. package/dist/src/migrations/2019-03-18-104147-event-run-migration-struct.js.map +1 -0
  33. package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.d.ts +3 -0
  34. package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.d.ts.map +1 -0
  35. package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.js +66 -0
  36. package/dist/src/migrations/2019-07-29-103000-trigger-event-function-fix.js.map +1 -0
  37. package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.d.ts +3 -0
  38. package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.d.ts.map +1 -0
  39. package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.js +21 -0
  40. package/dist/src/migrations/2019-11-28-100000-missing-setting-fallback.js.map +1 -0
  41. package/dist/src/migrations/2021-03-23-110000-timestamp-fix.d.ts +3 -0
  42. package/dist/src/migrations/2021-03-23-110000-timestamp-fix.d.ts.map +1 -0
  43. package/dist/src/migrations/2021-03-23-110000-timestamp-fix.js +15 -0
  44. package/dist/src/migrations/2021-03-23-110000-timestamp-fix.js.map +1 -0
  45. package/dist/src/migrations/2021-05-07-155800-event-log-rework.js +2 -2
  46. package/dist/src/migrations/2021-12-21-155500-events-up.d.ts +3 -0
  47. package/dist/src/migrations/2021-12-21-155500-events-up.d.ts.map +1 -0
  48. package/dist/src/migrations/2021-12-21-155500-events-up.js +15 -0
  49. package/dist/src/migrations/2021-12-21-155500-events-up.js.map +1 -0
  50. package/dist/src/migrations/2022-02-08-132600-fn-search-path.d.ts +3 -0
  51. package/dist/src/migrations/2022-02-08-132600-fn-search-path.d.ts.map +1 -0
  52. package/dist/src/migrations/2022-02-08-132600-fn-search-path.js +16 -0
  53. package/dist/src/migrations/2022-02-08-132600-fn-search-path.js.map +1 -0
  54. package/dist/src/migrations/2022-02-08-140500-drop-deadcode.d.ts +3 -0
  55. package/dist/src/migrations/2022-02-08-140500-drop-deadcode.d.ts.map +1 -0
  56. package/dist/src/migrations/2022-02-08-140500-drop-deadcode.js +11 -0
  57. package/dist/src/migrations/2022-02-08-140500-drop-deadcode.js.map +1 -0
  58. package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.d.ts +3 -0
  59. package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.d.ts.map +1 -0
  60. package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.js +50 -0
  61. package/dist/src/migrations/2022-02-08-144400-dynamic-stage-schema.js.map +1 -0
  62. package/dist/src/migrations/2022-10-03-110000-table-on-delete.d.ts +4 -0
  63. package/dist/src/migrations/2022-10-03-110000-table-on-delete.d.ts.map +1 -0
  64. package/dist/src/migrations/2022-10-03-110000-table-on-delete.js +61 -0
  65. package/dist/src/migrations/2022-10-03-110000-table-on-delete.js.map +1 -0
  66. package/dist/src/migrations/runner.d.ts +18 -3
  67. package/dist/src/migrations/runner.d.ts.map +1 -1
  68. package/dist/src/migrations/runner.js +69 -10
  69. package/dist/src/migrations/runner.js.map +1 -1
  70. package/dist/src/migrations/snapshot-factory.d.ts +6 -0
  71. package/dist/src/migrations/snapshot-factory.d.ts.map +1 -0
  72. package/dist/src/migrations/snapshot-factory.js +46 -0
  73. package/dist/src/migrations/snapshot-factory.js.map +1 -0
  74. package/dist/src/migrations/snapshot.d.ts +3 -0
  75. package/dist/src/migrations/snapshot.d.ts.map +1 -0
  76. package/dist/src/migrations/snapshot.js +172 -0
  77. package/dist/src/migrations/snapshot.js.map +1 -0
  78. package/dist/src/migrations/types.d.ts +2 -0
  79. package/dist/src/migrations/types.d.ts.map +1 -1
  80. package/dist/src/model/ProjectInitializer.d.ts +6 -10
  81. package/dist/src/model/ProjectInitializer.d.ts.map +1 -1
  82. package/dist/src/model/ProjectInitializer.js +11 -29
  83. package/dist/src/model/ProjectInitializer.js.map +1 -1
  84. package/dist/src/model/commands/Command.d.ts +1 -5
  85. package/dist/src/model/commands/Command.d.ts.map +1 -1
  86. package/dist/src/model/database/DatabaseContext.d.ts +5 -4
  87. package/dist/src/model/database/DatabaseContext.d.ts.map +1 -1
  88. package/dist/src/model/database/DatabaseContext.js +7 -7
  89. package/dist/src/model/database/DatabaseContext.js.map +1 -1
  90. package/dist/src/model/dtos/ExecutedMigration.d.ts +2 -1
  91. package/dist/src/model/dtos/ExecutedMigration.d.ts.map +1 -1
  92. package/dist/src/model/dtos/ExecutedMigration.js +2 -1
  93. package/dist/src/model/dtos/ExecutedMigration.js.map +1 -1
  94. package/dist/src/model/events/EventResponseBuilder.d.ts +2 -2
  95. package/dist/src/model/events/EventResponseBuilder.d.ts.map +1 -1
  96. package/dist/src/model/events/EventResponseBuilder.js +10 -10
  97. package/dist/src/model/events/EventResponseBuilder.js.map +1 -1
  98. package/dist/src/model/events/EventResponseHelper.d.ts +1 -1
  99. package/dist/src/model/events/EventResponseHelper.d.ts.map +1 -1
  100. package/dist/src/model/events/index.d.ts +1 -0
  101. package/dist/src/model/events/index.d.ts.map +1 -1
  102. package/dist/src/model/events/index.js +1 -0
  103. package/dist/src/model/events/index.js.map +1 -1
  104. package/dist/src/model/events/types.d.ts +56 -0
  105. package/dist/src/model/events/types.d.ts.map +1 -0
  106. package/dist/src/model/events/types.js +51 -0
  107. package/dist/src/model/events/types.js.map +1 -0
  108. package/dist/src/model/helpers/index.d.ts +0 -1
  109. package/dist/src/model/helpers/index.d.ts.map +1 -1
  110. package/dist/src/model/helpers/index.js +0 -1
  111. package/dist/src/model/helpers/index.js.map +1 -1
  112. package/dist/src/model/index.d.ts +1 -0
  113. package/dist/src/model/index.d.ts.map +1 -1
  114. package/dist/src/model/index.js +1 -0
  115. package/dist/src/model/index.js.map +1 -1
  116. package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts +13 -0
  117. package/dist/src/model/metadata/ResolvedDatabaseMetadata.d.ts.map +1 -0
  118. package/dist/src/model/metadata/ResolvedDatabaseMetadata.js +42 -0
  119. package/dist/src/model/metadata/ResolvedDatabaseMetadata.js.map +1 -0
  120. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts +8 -0
  121. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.d.ts.map +1 -0
  122. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js +92 -0
  123. package/dist/src/model/metadata/SchemaDatabaseMetadataResolver.js.map +1 -0
  124. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts +17 -0
  125. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.d.ts.map +1 -0
  126. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js +33 -0
  127. package/dist/src/model/metadata/SchemaDatabaseMetadataResolverStore.js.map +1 -0
  128. package/dist/src/model/metadata/index.d.ts +4 -0
  129. package/dist/src/model/metadata/index.d.ts.map +1 -0
  130. package/dist/src/model/metadata/index.js +22 -0
  131. package/dist/src/model/metadata/index.js.map +1 -0
  132. package/dist/src/model/migrations/ProjectMigrator.d.ts +3 -1
  133. package/dist/src/model/migrations/ProjectMigrator.d.ts.map +1 -1
  134. package/dist/src/model/migrations/ProjectMigrator.js +14 -6
  135. package/dist/src/model/migrations/ProjectMigrator.js.map +1 -1
  136. package/dist/src/model/migrations/SchemaVersionBuilder.d.ts +20 -0
  137. package/dist/src/model/migrations/SchemaVersionBuilder.d.ts.map +1 -1
  138. package/dist/src/model/migrations/SchemaVersionBuilder.js +5 -4
  139. package/dist/src/model/migrations/SchemaVersionBuilder.js.map +1 -1
  140. package/dist/src/model/queries/events/EventQueryHelpers.d.ts +2 -2
  141. package/dist/src/model/queries/events/EventQueryHelpers.d.ts.map +1 -1
  142. package/dist/src/model/queries/events/EventQueryHelpers.js +7 -7
  143. package/dist/src/model/queries/events/EventQueryHelpers.js.map +1 -1
  144. package/dist/src/model/queries/events/EventsQuery.d.ts +2 -2
  145. package/dist/src/model/queries/events/EventsQuery.d.ts.map +1 -1
  146. package/dist/src/model/queries/events/EventsQuery.js.map +1 -1
  147. package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts +1 -0
  148. package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.d.ts.map +1 -1
  149. package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js +2 -1
  150. package/dist/src/model/queries/migrations/ExecutedMigrationsQueryHelper.js.map +1 -1
  151. package/dist/src/tsconfig.tsbuildinfo +1 -1
  152. package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js +2 -0
  153. package/dist/tests/cases/migrations/2020-05-06-150000-composed-primary.test.js.map +1 -1
  154. package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js +2 -0
  155. package/dist/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.js.map +1 -1
  156. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.d.ts +2 -0
  157. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.d.ts.map +1 -0
  158. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js +43 -0
  159. package/dist/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.js.map +1 -0
  160. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +18 -15
  162. package/src/SystemContainer.ts +8 -18
  163. package/src/bin/runMigrations.ts +42 -0
  164. package/src/index.ts +2 -2
  165. package/src/migrations/{2018-08-04-102200-init.sql → 2018-08-04-102200-init.ts} +8 -0
  166. package/src/migrations/{2018-08-05-130501-trigger-event-function.sql → 2018-08-05-130501-trigger-event-function.ts} +8 -0
  167. package/src/migrations/{2019-01-14-143432-event-trx-id.sql → 2019-01-14-143432-event-trx-id.ts} +8 -0
  168. package/src/migrations/{2019-02-04-154500-event-rebase.sql → 2019-02-04-154500-event-rebase.ts} +9 -0
  169. package/src/migrations/2019-03-18-104147-event-run-migration-struct.ts +11 -0
  170. package/src/migrations/{2019-07-29-103000-trigger-event-function-fix.sql → 2019-07-29-103000-trigger-event-function-fix.ts} +8 -0
  171. package/src/migrations/{2019-11-28-100000-missing-setting-fallback.sql → 2019-11-28-100000-missing-setting-fallback.ts} +8 -0
  172. package/src/migrations/{2021-03-23-110000-timestamp-fix.sql → 2021-03-23-110000-timestamp-fix.ts} +8 -0
  173. package/src/migrations/2021-05-07-155800-event-log-rework.ts +2 -2
  174. package/src/migrations/{2021-12-21-155500-events-up.sql → 2021-12-21-155500-events-up.ts} +8 -0
  175. package/src/migrations/{2022-02-08-132600-fn-search-path.sql → 2022-02-08-132600-fn-search-path.ts} +8 -0
  176. package/src/migrations/2022-02-08-140500-drop-deadcode.ts +10 -0
  177. package/src/migrations/{2022-02-08-144400-dynamic-stage-schema.sql → 2022-02-08-144400-dynamic-stage-schema.ts} +8 -0
  178. package/src/migrations/2022-10-03-110000-table-on-delete.ts +65 -0
  179. package/src/migrations/runner.ts +85 -15
  180. package/src/migrations/snapshot-factory.ts +45 -0
  181. package/src/migrations/snapshot-template-end.txt +1 -0
  182. package/src/migrations/snapshot-template-start.txt +2 -0
  183. package/src/migrations/snapshot.ts +169 -0
  184. package/src/migrations/types.ts +2 -0
  185. package/src/model/ProjectInitializer.ts +15 -50
  186. package/src/model/commands/Command.ts +1 -1
  187. package/src/model/database/DatabaseContext.ts +12 -8
  188. package/src/model/dtos/ExecutedMigration.ts +1 -0
  189. package/src/model/events/EventResponseBuilder.ts +3 -3
  190. package/src/model/events/EventResponseHelper.ts +1 -1
  191. package/src/model/events/index.ts +1 -0
  192. package/src/model/events/types.ts +63 -0
  193. package/src/model/helpers/index.ts +0 -1
  194. package/src/model/index.ts +1 -0
  195. package/src/model/metadata/ResolvedDatabaseMetadata.ts +54 -0
  196. package/src/model/metadata/SchemaDatabaseMetadataResolver.ts +136 -0
  197. package/src/model/metadata/SchemaDatabaseMetadataResolverStore.ts +41 -0
  198. package/src/model/metadata/index.ts +3 -0
  199. package/src/model/migrations/ProjectMigrator.ts +19 -5
  200. package/src/model/migrations/SchemaVersionBuilder.ts +3 -2
  201. package/src/model/queries/events/EventQueryHelpers.ts +2 -2
  202. package/src/model/queries/events/EventsQuery.ts +2 -2
  203. package/src/model/queries/migrations/ExecutedMigrationsQueryHelper.ts +3 -1
  204. package/src/tsconfig.json +10 -33
  205. package/tests/cases/migrations/2020-05-06-150000-composed-primary.test.ts +2 -0
  206. package/tests/cases/migrations/2020-06-01-103000-event-trigger-perf.test.ts +2 -0
  207. package/tests/cases/migrations/2022-10-03-110000-table-on-delete.test.ts +45 -0
  208. package/tests/tsconfig.json +2 -6
  209. package/tsconfig.json +2 -6
  210. package/dist/src/model/helpers/SystemVariablesSetupHelper.d.ts +0 -5
  211. package/dist/src/model/helpers/SystemVariablesSetupHelper.d.ts.map +0 -1
  212. package/dist/src/model/helpers/SystemVariablesSetupHelper.js +0 -15
  213. package/dist/src/model/helpers/SystemVariablesSetupHelper.js.map +0 -1
  214. package/dist/tests/cases/integration/systemApi/projectInitializer.test.d.ts +0 -2
  215. package/dist/tests/cases/integration/systemApi/projectInitializer.test.d.ts.map +0 -1
  216. package/dist/tests/cases/integration/systemApi/projectInitializer.test.js +0 -26
  217. package/dist/tests/cases/integration/systemApi/projectInitializer.test.js.map +0 -1
  218. package/src/migrations/2019-03-18-104147-event-run-migration-struct.sql +0 -3
  219. package/src/migrations/2022-02-08-140500-drop-deadcode.sql +0 -2
  220. package/src/model/helpers/SystemVariablesSetupHelper.ts +0 -14
  221. package/tests/cases/integration/systemApi/projectInitializer.test.ts +0 -31
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const snapshot_factory_1 = require("./snapshot-factory");
4
+ exports.default = (0, snapshot_factory_1.snapshotMigration)(({ randomUuidFn }) => `
5
+ CREATE DOMAIN "event_data_type" AS "text"
6
+ CONSTRAINT "event_data_type_check" CHECK ((VALUE = ANY (ARRAY['create'::"text", 'update'::"text", 'delete'::"text"])));
7
+ CREATE DOMAIN "event_type" AS "text"
8
+ CONSTRAINT "event_type_check" CHECK ((VALUE = ANY (ARRAY['init'::"text", 'create'::"text", 'update'::"text", 'delete'::"text", 'run_migration'::"text"])));
9
+ CREATE FUNCTION "trigger_event"() RETURNS "trigger"
10
+ LANGUAGE "plpgsql"
11
+ AS $$
12
+ DECLARE new_event_type TEXT;
13
+ DECLARE table_name TEXT;
14
+ DECLARE values JSONB;
15
+ DECLARE update_diff JSONB;
16
+ DECLARE primary_values JSONB;
17
+ DECLARE old_row JSONB;
18
+ DECLARE new_row JSONB;
19
+ BEGIN
20
+ old_row := CASE WHEN TG_OP = 'DELETE' OR TG_OP = 'UPDATE' THEN TO_JSONB(old) ELSE NULL END;
21
+ new_row := CASE WHEN TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN TO_JSONB(new) ELSE NULL END;
22
+ primary_values := (
23
+ SELECT JSONB_AGG(value ORDER BY array_position(TG_ARGV, key))
24
+ FROM JSONB_EACH(COALESCE(old_row, new_row))
25
+ WHERE key = ANY (TG_ARGV)
26
+ );
27
+ table_name := tg_table_name;
28
+ CASE TG_OP
29
+ WHEN 'INSERT' THEN BEGIN
30
+ new_event_type := 'create';
31
+ values := COALESCE(
32
+ (
33
+ SELECT JSONB_OBJECT_AGG(key, value)
34
+ FROM JSONB_EACH(new_row)
35
+ WHERE NOT (key = ANY (TG_ARGV))
36
+ ),
37
+ JSONB_BUILD_OBJECT()
38
+ );
39
+ END;
40
+ WHEN 'UPDATE' THEN BEGIN
41
+ update_diff := (
42
+ SELECT JSONB_OBJECT_AGG(COALESCE(n.key, o.key), n.value)
43
+ FROM JSONB_EACH(old_row) o
44
+ FULL OUTER JOIN JSONB_EACH(new_row) n ON n.key = o.key
45
+ WHERE n.value IS DISTINCT FROM o.value
46
+ );
47
+ IF (SELECT COUNT(*) FROM JSONB_OBJECT_KEYS(update_diff)) = 0 THEN
48
+ RETURN NULL;
49
+ END IF;
50
+ new_event_type := 'update';
51
+ values := update_diff;
52
+ END;
53
+ WHEN 'DELETE' THEN BEGIN
54
+ new_event_type := 'delete';
55
+ END;
56
+ ELSE RAISE
57
+ EXCEPTION 'Unknown TG_OP value %', TG_OP;
58
+ END CASE;
59
+ CASE WHEN NULLIF(CURRENT_SETTING('system.schema_id', true), '') IS NULL THEN
60
+ PERFORM SET_CONFIG('system.schema_id', (select MAX("id")::TEXT from schema_migration), TRUE);
61
+ ELSE
62
+ -- do nothing
63
+ END CASE;
64
+ INSERT INTO "event_data" ("id", "type", "table_name", "row_ids", "values", "created_at", schema_id, identity_id)
65
+ VALUES (
66
+ "${randomUuidFn}"(),
67
+ new_event_type,
68
+ table_name,
69
+ primary_values,
70
+ values,
71
+ CLOCK_TIMESTAMP(),
72
+ CURRENT_SETTING('system.schema_id')::INT,
73
+ COALESCE(
74
+ CURRENT_SETTING('tenant.identity_id'::TEXT, TRUE)::UUID,
75
+ '00000000-0000-0000-0000-000000000000'::UUID)
76
+ );
77
+ RETURN NULL;
78
+ END;
79
+ $$;
80
+ CREATE FUNCTION "trigger_event_commit"() RETURNS "trigger"
81
+ LANGUAGE "plpgsql"
82
+ AS $$
83
+ BEGIN
84
+ PERFORM PG_ADVISORY_XACT_LOCK(5218230332970456493); -- well-known random number
85
+ CASE WHEN
86
+ NULLIF(CURRENT_SETTING('system.transaction_id', TRUE), '') IS NOT NULL
87
+ AND NULLIF(CURRENT_SETTING('system.transaction_inserted', TRUE), '') IS NULL
88
+ THEN
89
+ INSERT INTO stage_transaction(transaction_id, stage_id, applied_at)
90
+ VALUES (CURRENT_SETTING('system.transaction_id')::UUID,
91
+ (
92
+ SELECT id
93
+ FROM stage
94
+ WHERE schema = TG_TABLE_SCHEMA
95
+ ),
96
+ CLOCK_TIMESTAMP())
97
+ ON CONFLICT DO NOTHING;
98
+ PERFORM SET_CONFIG('system.transaction_inserted', '1', TRUE);
99
+ ELSE
100
+ -- do nothing
101
+ END CASE;
102
+ RETURN NULL;
103
+ END
104
+ $$;
105
+ CREATE TABLE "event_data" (
106
+ "id" "uuid" NOT NULL,
107
+ "type" "event_data_type" NOT NULL,
108
+ "table_name" "text" NOT NULL,
109
+ "row_ids" "jsonb" NOT NULL,
110
+ "values" "jsonb",
111
+ "created_at" timestamp with time zone DEFAULT "clock_timestamp"() NOT NULL,
112
+ "schema_id" integer NOT NULL,
113
+ "identity_id" "uuid" NOT NULL,
114
+ "transaction_id" "uuid" DEFAULT COALESCE((NULLIF("current_setting"('system.transaction_id'::"text", true), ''::"text"))::"uuid", ("set_config"('system.transaction_id'::"text", ("${randomUuidFn}"())::"text", true))::"uuid") NOT NULL
115
+ );
116
+ CREATE TABLE "schema_migration" (
117
+ "id" integer NOT NULL,
118
+ "version" character varying(20) NOT NULL,
119
+ "name" character varying(255) NOT NULL,
120
+ "migration" "json" NOT NULL,
121
+ "checksum" character(32) NOT NULL,
122
+ "executed_at" timestamp with time zone DEFAULT "now"() NOT NULL
123
+ );
124
+ CREATE SEQUENCE "schema_migration_id_seq"
125
+ AS integer
126
+ START WITH 1
127
+ INCREMENT BY 1
128
+ NO MINVALUE
129
+ NO MAXVALUE
130
+ CACHE 1;
131
+ ALTER SEQUENCE "schema_migration_id_seq" OWNED BY "schema_migration"."id";
132
+ CREATE TABLE "stage" (
133
+ "id" "uuid" NOT NULL,
134
+ "name" "text" NOT NULL,
135
+ "slug" "text" NOT NULL,
136
+ "schema" "text" NOT NULL
137
+ );
138
+ CREATE TABLE "stage_transaction" (
139
+ "transaction_id" "uuid" NOT NULL,
140
+ "stage_id" "uuid" NOT NULL,
141
+ "applied_at" timestamp with time zone NOT NULL
142
+ );
143
+ ALTER TABLE ONLY "schema_migration" ALTER COLUMN "id" SET DEFAULT "nextval"('"schema_migration_id_seq"'::"regclass");
144
+ ALTER TABLE ONLY "event_data"
145
+ ADD CONSTRAINT "event_data_pkey" PRIMARY KEY ("id");
146
+ ALTER TABLE ONLY "schema_migration"
147
+ ADD CONSTRAINT "schema_migration_name_key" UNIQUE ("name");
148
+ ALTER TABLE ONLY "schema_migration"
149
+ ADD CONSTRAINT "schema_migration_pkey" PRIMARY KEY ("id");
150
+ ALTER TABLE ONLY "schema_migration"
151
+ ADD CONSTRAINT "schema_migration_version_key" UNIQUE ("version");
152
+ ALTER TABLE ONLY "stage"
153
+ ADD CONSTRAINT "stage_pkey" PRIMARY KEY ("id");
154
+ ALTER TABLE ONLY "stage"
155
+ ADD CONSTRAINT "stage_schema_key" UNIQUE ("schema");
156
+ ALTER TABLE ONLY "stage"
157
+ ADD CONSTRAINT "stage_slug_key" UNIQUE ("slug");
158
+ ALTER TABLE ONLY "stage_transaction"
159
+ ADD CONSTRAINT "stage_transaction_pkey" PRIMARY KEY ("transaction_id", "stage_id");
160
+ CREATE INDEX "event_data_created" ON "event_data" USING "btree" ("created_at");
161
+ CREATE INDEX "system_event2_table_name" ON "event_data" USING "btree" ("table_name");
162
+ CREATE INDEX "system_event2_transaction" ON "event_data" USING "btree" ("transaction_id");
163
+ CREATE INDEX "system_event2_type" ON "event_data" USING "btree" ("type");
164
+ CREATE INDEX "system_event_row_id" ON "event_data" USING "btree" ("row_ids");
165
+ CREATE INDEX "system_schema_migration_version" ON "schema_migration" USING "btree" ("version");
166
+ CREATE INDEX "transaction_applied" ON "stage_transaction" USING "btree" ("applied_at");
167
+ ALTER TABLE ONLY "event_data"
168
+ ADD CONSTRAINT "event_data_schema_id_fkey" FOREIGN KEY ("schema_id") REFERENCES "schema_migration"("id");
169
+ ALTER TABLE ONLY "stage_transaction"
170
+ ADD CONSTRAINT "stage_transaction_stage_id_fkey" FOREIGN KEY ("stage_id") REFERENCES "stage"("id") ON DELETE CASCADE;
171
+ `);
172
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/migrations/snapshot.ts"],"names":[],"mappings":";;AAAA,yDAAsD;AACtD,kBAAe,IAAA,oCAAiB,EAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DhD,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wLAgDqK,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDnM,CAAC,CAAA"}
@@ -1,8 +1,10 @@
1
1
  import { Schema } from '@contember/schema';
2
2
  import { ProjectConfig } from '../types';
3
3
  import { Connection } from '@contember/database';
4
+ import { SchemaDatabaseMetadata } from '@contember/schema-utils';
4
5
  export interface SystemMigrationArgs {
5
6
  schemaResolver: (connection: Connection.ConnectionLike) => Promise<Schema>;
7
+ databaseMetadataResolver: (connection: Connection.ConnectionLike, schema: string) => Promise<SchemaDatabaseMetadata>;
6
8
  project: ProjectConfig;
7
9
  }
8
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,OAAO,EAAE,aAAa,CAAA;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,WAAW,mBAAmB;IACnC,cAAc,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,wBAAwB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpH,OAAO,EAAE,aAAa,CAAA;CACtB"}
@@ -1,19 +1,15 @@
1
1
  import { ProjectConfig } from '../types';
2
- import { ProjectMigrator, SchemaVersionBuilder } from './migrations';
3
2
  import { StageCreator } from './stages';
4
3
  import { DatabaseContextFactory } from './database';
5
- import { SystemDbMigrationsRunnerFactory } from '../SystemContainer';
6
- import { DatabaseConfig } from '@contember/database';
7
4
  import { Logger } from '@contember/logger';
5
+ import { SystemMigrationsRunner } from '../migrations';
8
6
  export declare class ProjectInitializer {
9
- private readonly projectMigrator;
10
7
  private readonly stageCreator;
11
- private readonly systemDbMigrationsRunnerFactory;
12
- private readonly schemaVersionBuilder;
13
- constructor(projectMigrator: ProjectMigrator, stageCreator: StageCreator, systemDbMigrationsRunnerFactory: SystemDbMigrationsRunnerFactory, schemaVersionBuilder: SchemaVersionBuilder);
14
- initialize(databaseContextFactory: DatabaseContextFactory, project: ProjectConfig & {
15
- db?: DatabaseConfig;
16
- }, logger: Logger): Promise<void>;
8
+ private readonly migrationsRunner;
9
+ private readonly databaseContextFactory;
10
+ private readonly project;
11
+ constructor(stageCreator: StageCreator, migrationsRunner: SystemMigrationsRunner, databaseContextFactory: DatabaseContextFactory, project: ProjectConfig);
12
+ initialize(logger: Logger): Promise<void>;
17
13
  private initStages;
18
14
  }
19
15
  //# sourceMappingURL=ProjectInitializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectInitializer.d.ts","sourceRoot":"","sources":["../../../src/model/ProjectInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAmB,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EAIN,cAAc,EAGd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAA8B,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEtE,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,+BAA+B;IAChD,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAHpB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,+BAA+B,EAAE,+BAA+B,EAChE,oBAAoB,EAAE,oBAAoB;IAG/C,UAAU,CACtB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,aAAa,GAAG;QAAE,EAAE,CAAC,EAAE,cAAc,CAAA;KAAE,EAChD,MAAM,EAAE,MAAM;YAyCD,UAAU;CAWxB"}
1
+ {"version":3,"file":"ProjectInitializer.d.ts","sourceRoot":"","sources":["../../../src/model/ProjectInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAmB,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAA8B,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEtD,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,sBAAsB,EACxC,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,aAAa;IAG3B,UAAU,CAAC,MAAM,EAAE,MAAM;YAiBxB,UAAU;CAWxB"}
@@ -4,46 +4,28 @@ exports.ProjectInitializer = void 0;
4
4
  const database_1 = require("@contember/database");
5
5
  const logger_1 = require("@contember/logger");
6
6
  class ProjectInitializer {
7
- constructor(projectMigrator, stageCreator, systemDbMigrationsRunnerFactory, schemaVersionBuilder) {
8
- this.projectMigrator = projectMigrator;
7
+ constructor(stageCreator, migrationsRunner, databaseContextFactory, project) {
9
8
  this.stageCreator = stageCreator;
10
- this.systemDbMigrationsRunnerFactory = systemDbMigrationsRunnerFactory;
11
- this.schemaVersionBuilder = schemaVersionBuilder;
9
+ this.migrationsRunner = migrationsRunner;
10
+ this.databaseContextFactory = databaseContextFactory;
11
+ this.project = project;
12
12
  }
13
- async initialize(databaseContextFactory, project, logger) {
14
- const dbContext = databaseContextFactory.create();
13
+ async initialize(logger) {
15
14
  return await logger.scope(async (initLogger) => {
16
- if (project.db) {
17
- // todo: use dbContext
18
- initLogger.debug('Executing system schema migrations');
19
- await (0, database_1.createDatabaseIfNotExists)(project.db, message => typeof message === 'string' ? initLogger.warn(message) : initLogger.error(message));
20
- const singleConnection = database_1.Connection.createSingle(project.db, err => initLogger.error(err, { message: 'Database client error' }));
21
- await singleConnection.scope(async (connection) => {
22
- const systemSchema = dbContext.client.schema;
23
- const schemaResolver = (connection) => {
24
- const dbContextMigrations = databaseContextFactory
25
- .withClient(new database_1.Client(connection, systemSchema, { module: 'system' }))
26
- .create();
27
- return this.schemaVersionBuilder.buildSchema(dbContextMigrations);
28
- };
29
- await this.systemDbMigrationsRunnerFactory(connection, systemSchema).migrate(message => initLogger.warn(message), {
30
- schemaResolver,
31
- project,
32
- });
33
- });
34
- await singleConnection.end();
35
- }
15
+ initLogger.debug('Executing system schema migrations');
16
+ await this.migrationsRunner.run(initLogger);
17
+ const dbContext = this.databaseContextFactory.create();
36
18
  await (0, database_1.retryTransaction)(() => dbContext.transaction(async (trx) => {
37
- await this.initStages(trx, project, initLogger);
19
+ await this.initStages(trx, logger);
38
20
  }), message => initLogger.warn(message));
39
21
  if (dbContext.client.connection instanceof database_1.Connection) {
40
22
  await dbContext.client.connection.clearPool();
41
23
  }
42
24
  }, {}, { handler: logger_1.FingerCrossedLoggerHandler.factory() });
43
25
  }
44
- async initStages(db, project, logger) {
26
+ async initStages(db, logger) {
45
27
  logger.debug(`Creating stages`);
46
- for (const stage of project.stages) {
28
+ for (const stage of this.project.stages) {
47
29
  const created = await this.stageCreator.createStage(db, stage);
48
30
  if (created) {
49
31
  logger.warn(`Created stage ${stage.slug}`, { stage: stage.slug });
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectInitializer.js","sourceRoot":"","sources":["../../../src/model/ProjectInitializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectInitializer.js","sourceRoot":"","sources":["../../../src/model/ProjectInitializer.ts"],"names":[],"mappings":";;;AAGA,kDAAkE;AAClE,8CAAsE;AAGtE,MAAa,kBAAkB;IAC9B,YACkB,YAA0B,EAC1B,gBAAwC,EACxC,sBAA8C,EAC9C,OAAsB;QAHtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,YAAO,GAAP,OAAO,CAAe;IACrC,CAAC;IAEG,KAAK,CAAC,UAAU,CAAC,MAAc;QACrC,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YAC5C,UAAU,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACtD,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAA;YACtD,MAAM,IAAA,2BAAgB,EACrB,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACvC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACnC,CAAC,CAAC,EACF,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CACnC,CAAA;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,YAAY,qBAAU,EAAE;gBACtD,MAAM,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA;aAC7C;QACF,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,mCAA0B,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,EAA+C,EAAE,MAAc;QACvF,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC9D,IAAI,OAAO,EAAE;gBACZ,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;aACjE;iBAAM;gBACN,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;aAClE;SACD;IACF,CAAC;CACD;AApCD,gDAoCC"}
@@ -2,11 +2,7 @@ import { Client } from '@contember/database';
2
2
  import { CommandBus } from './CommandBus';
3
3
  import { Providers } from '../../utils';
4
4
  interface Command<Result> {
5
- execute(args: {
6
- db: Client;
7
- providers: Providers;
8
- bus: CommandBus;
9
- }): Promise<Result>;
5
+ execute(args: Command.Args): Promise<Result>;
10
6
  }
11
7
  declare namespace Command {
12
8
  interface Args {
@@ -1 +1 @@
1
- {"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../../src/model/commands/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,UAAU,OAAO,CAAC,MAAM;IACvB,OAAO,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACrF;AAED,kBAAU,OAAO,CAAC;IACjB,UAAiB,IAAI;QACpB,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,SAAS,CAAA;QACpB,GAAG,EAAE,UAAU,CAAA;KACf;CACD;AACD,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../../src/model/commands/Command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,UAAU,OAAO,CAAC,MAAM;IACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC5C;AAED,kBAAU,OAAO,CAAC;IACjB,UAAiB,IAAI;QACpB,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,SAAS,CAAA;QACpB,GAAG,EAAE,UAAU,CAAA;KACf;CACD;AACD,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -6,14 +6,15 @@ export interface DatabaseContext<ConnectionType extends Connection.ConnectionLik
6
6
  client: Client<ConnectionType>;
7
7
  queryHandler: QueryHandler<DatabaseQueryable>;
8
8
  transaction: <T>(cb: (db: DatabaseContext<Connection.TransactionLike>) => Promise<T> | T) => Promise<T>;
9
+ scope: <T>(cb: (db: DatabaseContext<ConnectionType & Connection.AcquiredConnectionLike>) => Promise<T> | T) => Promise<T>;
9
10
  locked: <T>(lock: number, cb: (db: DatabaseContext<Connection.ConnectionLike>) => Promise<T> | T) => Promise<T>;
10
11
  commandBus: CommandBus;
11
12
  }
12
13
  export declare class DatabaseContextFactory {
13
- private readonly client;
14
+ readonly schemaName: string;
15
+ private readonly connection;
14
16
  private readonly providers;
15
- constructor(client: Client, providers: UuidProvider);
16
- create(): DatabaseContext;
17
- withClient(client: Client): DatabaseContextFactory;
17
+ constructor(schemaName: string, connection: Connection, providers: UuidProvider);
18
+ create(connection?: Connection.ConnectionLike): DatabaseContext;
18
19
  }
19
20
  //# sourceMappingURL=DatabaseContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseContext.d.ts","sourceRoot":"","sources":["../../../../src/model/database/DatabaseContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAA4B,MAAM,qBAAqB,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,WAAW,eAAe,CAAC,cAAc,SAAS,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;IAC5G,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9B,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAC7C,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvG,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/G,UAAU,EAAE,UAAU,CAAA;CACtB;AAED,qBAAa,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAU,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAA1C,MAAM,EAAE,MAAM,EAAmB,SAAS,EAAE,YAAY;IAE9E,MAAM,IAAI,eAAe;IAIzB,UAAU,CAAC,MAAM,EAAE,MAAM;CAGhC"}
1
+ {"version":3,"file":"DatabaseContext.d.ts","sourceRoot":"","sources":["../../../../src/model/database/DatabaseContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,WAAW,eAAe,CAAC,cAAc,SAAS,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;IAC5G,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9B,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAA;IAC7C,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACvG,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,GAAG,UAAU,CAAC,sBAAsB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACzH,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC/G,UAAU,EAAE,UAAU,CAAA;CACtB;AAED,qBAAa,sBAAsB;aAEjB,UAAU,EAAE,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFV,UAAU,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,YAAY;IAGlC,MAAM,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,cAAc,GAAG,eAAe;CAItE"}
@@ -4,15 +4,14 @@ exports.DatabaseContextFactory = void 0;
4
4
  const database_1 = require("@contember/database");
5
5
  const commands_1 = require("../commands");
6
6
  class DatabaseContextFactory {
7
- constructor(client, providers) {
8
- this.client = client;
7
+ constructor(schemaName, connection, providers) {
8
+ this.schemaName = schemaName;
9
+ this.connection = connection;
9
10
  this.providers = providers;
10
11
  }
11
- create() {
12
- return createDatabaseContext(this.client, this.providers);
13
- }
14
- withClient(client) {
15
- return new DatabaseContextFactory(client, this.providers);
12
+ create(connection) {
13
+ const client = new database_1.Client(connection !== null && connection !== void 0 ? connection : this.connection, this.schemaName, { module: 'system' });
14
+ return createDatabaseContext(client, this.providers);
16
15
  }
17
16
  }
18
17
  exports.DatabaseContextFactory = DatabaseContextFactory;
@@ -23,6 +22,7 @@ const createDatabaseContext = (client, providers) => ({
23
22
  await client.query(database_1.Connection.REPEATABLE_READ);
24
23
  return cb(createDatabaseContext(client, providers));
25
24
  }),
25
+ scope: cb => client.scope(client => cb(createDatabaseContext(client, providers))),
26
26
  commandBus: new commands_1.CommandBus(client, providers),
27
27
  locked: (lock, cb) => client.locked(lock, client => cb(createDatabaseContext(client, providers))),
28
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseContext.js","sourceRoot":"","sources":["../../../../src/model/database/DatabaseContext.ts"],"names":[],"mappings":";;;AAAA,kDAAqG;AAGrG,0CAAwC;AAUxC,MAAa,sBAAsB;IAClC,YAA6B,MAAc,EAAmB,SAAuB;QAAxD,WAAM,GAAN,MAAM,CAAQ;QAAmB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAElF,MAAM;QACZ,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC1D,CAAC;IAEM,UAAU,CAAC,MAAc;QAC/B,OAAO,IAAI,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC1D,CAAC;CACD;AAVD,wDAUC;AAED,MAAM,qBAAqB,GAAG,CAC7B,MAA8B,EAC9B,SAAuB,EACW,EAAE,CAAC,CAAC;IACtC,MAAM;IACN,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE;IACzC,WAAW,EAAE,EAAE,CAAC,EAAE,CACjB,MAAM,CAAC,WAAW,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACjC,MAAM,MAAM,CAAC,KAAK,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAA;QAC9C,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IACpD,CAAC,CAAC;IACH,UAAU,EAAE,IAAI,qBAAU,CAAC,MAAM,EAAE,SAAS,CAAC;IAC7C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACjG,CAAC,CAAA"}
1
+ {"version":3,"file":"DatabaseContext.js","sourceRoot":"","sources":["../../../../src/model/database/DatabaseContext.ts"],"names":[],"mappings":";;;AAAA,kDAA2E;AAG3E,0CAAwC;AAWxC,MAAa,sBAAsB;IAClC,YACiB,UAAkB,EACjB,UAAsB,EACtB,SAAuB;QAFxB,eAAU,GAAV,UAAU,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAc;IACtC,CAAC;IAEG,MAAM,CAAC,UAAsC;QACnD,MAAM,MAAM,GAAG,IAAI,iBAAM,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC/F,OAAO,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;CACD;AAXD,wDAWC;AAED,MAAM,qBAAqB,GAAG,CAC7B,MAA8B,EAC9B,SAAuB,EACW,EAAE,CAAC,CAAC;IACtC,MAAM;IACN,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE;IACzC,WAAW,EAAE,EAAE,CAAC,EAAE,CACjB,MAAM,CAAC,WAAW,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;QACjC,MAAM,MAAM,CAAC,KAAK,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAA;QAC9C,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IACpD,CAAC,CAAC;IACH,KAAK,EAAE,EAAE,CAAC,EAAE,CACX,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACrE,UAAU,EAAE,IAAI,qBAAU,CAAC,MAAM,EAAE,SAAS,CAAC;IAC7C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACjG,CAAC,CAAA"}
@@ -1,11 +1,12 @@
1
1
  import { Migration } from '@contember/schema-migrations';
2
2
  export declare class ExecutedMigration implements Migration {
3
+ readonly id: number;
3
4
  readonly name: string;
4
5
  readonly formatVersion: number;
5
6
  readonly modifications: Migration.Modification[];
6
7
  readonly executedAt: Date;
7
8
  readonly checksum: string;
8
9
  readonly version: string;
9
- constructor(name: string, formatVersion: number, modifications: Migration.Modification[], executedAt: Date, checksum: string);
10
+ constructor(id: number, name: string, formatVersion: number, modifications: Migration.Modification[], executedAt: Date, checksum: string);
10
11
  }
11
12
  //# sourceMappingURL=ExecutedMigration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigration.d.ts","sourceRoot":"","sources":["../../../../src/model/dtos/ExecutedMigration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,8BAA8B,CAAA;AAEhF,qBAAa,iBAAkB,YAAW,SAAS;aAIjC,IAAI,EAAE,MAAM;aACZ,aAAa,EAAE,MAAM;aACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE;aACvC,UAAU,EAAE,IAAI;aAChB,QAAQ,EAAE,MAAM;IAPjC,SAAgB,OAAO,EAAE,MAAM,CAAA;gBAGd,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,MAAM;CAIjC"}
1
+ {"version":3,"file":"ExecutedMigration.d.ts","sourceRoot":"","sources":["../../../../src/model/dtos/ExecutedMigration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,8BAA8B,CAAA;AAEhF,qBAAa,iBAAkB,YAAW,SAAS;aAIjC,EAAE,EAAE,MAAM;aACV,IAAI,EAAE,MAAM;aACZ,aAAa,EAAE,MAAM;aACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE;aACvC,UAAU,EAAE,IAAI;aAChB,QAAQ,EAAE,MAAM;IARjC,SAAgB,OAAO,EAAE,MAAM,CAAA;gBAGd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,EACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,MAAM;CAIjC"}
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExecutedMigration = void 0;
4
4
  const schema_migrations_1 = require("@contember/schema-migrations");
5
5
  class ExecutedMigration {
6
- constructor(name, formatVersion, modifications, executedAt, checksum) {
6
+ constructor(id, name, formatVersion, modifications, executedAt, checksum) {
7
+ this.id = id;
7
8
  this.name = name;
8
9
  this.formatVersion = formatVersion;
9
10
  this.modifications = modifications;
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutedMigration.js","sourceRoot":"","sources":["../../../../src/model/dtos/ExecutedMigration.ts"],"names":[],"mappings":";;;AAAA,oEAAgF;AAEhF,MAAa,iBAAiB;IAG7B,YACiB,IAAY,EACZ,aAAqB,EACrB,aAAuC,EACvC,UAAgB,EAChB,QAAgB;QAJhB,SAAI,GAAJ,IAAI,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,eAAU,GAAV,UAAU,CAAM;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAEhC,IAAI,CAAC,OAAO,GAAG,0CAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAC3D,CAAC;CACD;AAZD,8CAYC"}
1
+ {"version":3,"file":"ExecutedMigration.js","sourceRoot":"","sources":["../../../../src/model/dtos/ExecutedMigration.ts"],"names":[],"mappings":";;;AAAA,oEAAgF;AAEhF,MAAa,iBAAiB;IAG7B,YACiB,EAAU,EACV,IAAY,EACZ,aAAqB,EACrB,aAAuC,EACvC,UAAgB,EAChB,QAAgB;QALhB,OAAE,GAAF,EAAE,CAAQ;QACV,SAAI,GAAJ,IAAI,CAAQ;QACZ,kBAAa,GAAb,aAAa,CAAQ;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,eAAU,GAAV,UAAU,CAAM;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAEhC,IAAI,CAAC,OAAO,GAAG,0CAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IAC3D,CAAC;CACD;AAbD,8CAaC"}
@@ -1,10 +1,10 @@
1
- import { AnyEvent } from '@contember/engine-common';
1
+ import { ContentEvent } from './types';
2
2
  import { CreateEvent, DeleteEvent, UpdateEvent } from '../../schema';
3
3
  import { IdentityFetcher } from '../dependencies';
4
4
  export declare class EventResponseBuilder {
5
5
  private readonly identityFetcher;
6
6
  constructor(identityFetcher: IdentityFetcher);
7
- buildResponse(events: AnyEvent[]): Promise<(CreateEvent | DeleteEvent | UpdateEvent)[]>;
7
+ buildResponse(events: ContentEvent[]): Promise<(CreateEvent | DeleteEvent | UpdateEvent)[]>;
8
8
  private formatDescription;
9
9
  }
10
10
  //# sourceMappingURL=EventResponseBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventResponseBuilder.d.ts","sourceRoot":"","sources":["../../../../src/model/events/EventResponseBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAA6B,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,qBAAa,oBAAoB;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAEhD,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC;IAiCpG,OAAO,CAAC,iBAAiB;CAYzB"}
1
+ {"version":3,"file":"EventResponseBuilder.d.ts","sourceRoot":"","sources":["../../../../src/model/events/EventResponseBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAA6B,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAIjD,qBAAa,oBAAoB;IACpB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAEhD,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC;IAiCxG,OAAO,CAAC,iBAAiB;CAYzB"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventResponseBuilder = void 0;
4
- const engine_common_1 = require("@contember/engine-common");
4
+ const types_1 = require("./types");
5
5
  const schema_1 = require("../../schema");
6
6
  const utils_1 = require("../../utils");
7
7
  const identityUtils_1 = require("./identityUtils");
@@ -12,9 +12,9 @@ class EventResponseBuilder {
12
12
  }
13
13
  async buildResponse(events) {
14
14
  const apiEventTypeMapping = {
15
- [engine_common_1.EventType.create]: schema_1.EventType.Create,
16
- [engine_common_1.EventType.update]: schema_1.EventType.Update,
17
- [engine_common_1.EventType.delete]: schema_1.EventType.Delete,
15
+ [types_1.EventType.create]: schema_1.EventType.Create,
16
+ [types_1.EventType.update]: schema_1.EventType.Update,
17
+ [types_1.EventType.delete]: schema_1.EventType.Delete,
18
18
  };
19
19
  const identityIds = events.map(it => it.identityId).filter((it, index, ids) => ids.indexOf(it) === index);
20
20
  const identities = await this.identityFetcher.fetchIdentities(identityIds);
@@ -31,11 +31,11 @@ class EventResponseBuilder {
31
31
  identityDescription: (0, identityUtils_1.formatIdentity)(identitiesMap[it.identityId]),
32
32
  };
33
33
  switch (it.type) {
34
- case engine_common_1.EventType.create:
34
+ case types_1.EventType.create:
35
35
  return (() => (0, EventResponseHelper_1.appendCreateSpecificData)(commonData, it))();
36
- case engine_common_1.EventType.update:
36
+ case types_1.EventType.update:
37
37
  return (() => (0, EventResponseHelper_1.appendUpdateSpecificData)(commonData, it))();
38
- case engine_common_1.EventType.delete:
38
+ case types_1.EventType.delete:
39
39
  return (() => (0, EventResponseHelper_1.appendDeleteSpecificData)(commonData, it))();
40
40
  }
41
41
  (0, utils_1.assertNever)(it);
@@ -43,11 +43,11 @@ class EventResponseBuilder {
43
43
  }
44
44
  formatDescription(event) {
45
45
  switch (event.type) {
46
- case engine_common_1.EventType.create:
46
+ case types_1.EventType.create:
47
47
  return `Creating ${event.tableName}#${event.rowId.join(';')}`;
48
- case engine_common_1.EventType.update:
48
+ case types_1.EventType.update:
49
49
  return `Updating ${event.tableName}#${event.rowId.join(';')}`;
50
- case engine_common_1.EventType.delete:
50
+ case types_1.EventType.delete:
51
51
  return `Deleting ${event.tableName}#${event.rowId.join(';')}`;
52
52
  default:
53
53
  return (0, utils_1.assertNever)(event);
@@ -1 +1 @@
1
- {"version":3,"file":"EventResponseBuilder.js","sourceRoot":"","sources":["../../../../src/model/events/EventResponseBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventResponseBuilder.js","sourceRoot":"","sources":["../../../../src/model/events/EventResponseBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CreateEvent, DeleteEvent, UpdateEvent } from '@contember/engine-common';
1
+ import { CreateEvent, DeleteEvent, UpdateEvent } from './types';
2
2
  export declare const appendUpdateSpecificData: <T>(commonData: T, event: UpdateEvent) => T & {
3
3
  tableName: string;
4
4
  primaryKey: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"EventResponseHelper.d.ts","sourceRoot":"","sources":["../../../../src/model/events/EventResponseHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAExG,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;;;;CAM3E,CAAA;AAEF,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;;;CAK3E,CAAA;AAEF,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;CAK3E,CAAA"}
1
+ {"version":3,"file":"EventResponseHelper.d.ts","sourceRoot":"","sources":["../../../../src/model/events/EventResponseHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE/D,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;;;;CAM3E,CAAA;AAEF,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;;;CAK3E,CAAA;AAEF,eAAO,MAAM,wBAAwB,4BAA6B,WAAW;;;;CAK3E,CAAA"}
@@ -1,2 +1,3 @@
1
1
  export * from './EventResponseBuilder';
2
+ export * from './types';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/model/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,SAAS,CAAA"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./EventResponseBuilder"), exports);
18
+ __exportStar(require("./types"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/model/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,0CAAuB"}
@@ -0,0 +1,56 @@
1
+ export declare enum EventType {
2
+ delete = "delete",
3
+ update = "update",
4
+ create = "create"
5
+ }
6
+ export declare type ContentEvent = UpdateEvent | CreateEvent | DeleteEvent;
7
+ export interface Event {
8
+ readonly type: EventType;
9
+ readonly id: string;
10
+ readonly createdAt: Date;
11
+ readonly transactionId: string;
12
+ }
13
+ export declare class UpdateEvent implements Event {
14
+ readonly id: string;
15
+ readonly createdAt: Date;
16
+ readonly appliedAt: Date;
17
+ readonly identityId: string;
18
+ readonly transactionId: string;
19
+ readonly rowId: string[];
20
+ readonly tableName: string;
21
+ readonly values: {
22
+ [column: string]: any;
23
+ };
24
+ readonly type = EventType.update;
25
+ constructor(id: string, createdAt: Date, appliedAt: Date, identityId: string, transactionId: string, rowId: string[], tableName: string, values: {
26
+ [column: string]: any;
27
+ });
28
+ }
29
+ export declare class CreateEvent implements Event {
30
+ readonly id: string;
31
+ readonly createdAt: Date;
32
+ readonly appliedAt: Date;
33
+ readonly identityId: string;
34
+ readonly transactionId: string;
35
+ readonly rowId: string[];
36
+ readonly tableName: string;
37
+ readonly values: {
38
+ [column: string]: any;
39
+ };
40
+ readonly type = EventType.create;
41
+ constructor(id: string, createdAt: Date, appliedAt: Date, identityId: string, transactionId: string, rowId: string[], tableName: string, values: {
42
+ [column: string]: any;
43
+ });
44
+ }
45
+ export declare class DeleteEvent implements Event {
46
+ readonly id: string;
47
+ readonly createdAt: Date;
48
+ readonly appliedAt: Date;
49
+ readonly identityId: string;
50
+ readonly transactionId: string;
51
+ readonly rowId: string[];
52
+ readonly tableName: string;
53
+ readonly type = EventType.delete;
54
+ constructor(id: string, createdAt: Date, appliedAt: Date, identityId: string, transactionId: string, rowId: string[], tableName: string);
55
+ }
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/model/events/types.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACpB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CACjB;AAED,oBAAY,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAA;AAElE,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAE9B;AAED,qBAAa,WAAY,YAAW,KAAK;aAIvB,EAAE,EAAE,MAAM;aACV,SAAS,EAAE,IAAI;aACf,SAAS,EAAE,IAAI;aACf,UAAU,EAAE,MAAM;aAClB,aAAa,EAAE,MAAM;aACrB,KAAK,EAAE,MAAM,EAAE;aACf,SAAS,EAAE,MAAM;aACjB,MAAM,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAVlD,SAAgB,IAAI,oBAAmB;gBAGtB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAGlD;AAED,qBAAa,WAAY,YAAW,KAAK;aAIvB,EAAE,EAAE,MAAM;aACV,SAAS,EAAE,IAAI;aACf,SAAS,EAAE,IAAI;aACf,UAAU,EAAE,MAAM;aAClB,aAAa,EAAE,MAAM;aACrB,KAAK,EAAE,MAAM,EAAE;aACf,SAAS,EAAE,MAAM;aACjB,MAAM,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAVlD,SAAgB,IAAI,oBAAmB;gBAGtB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;CAGlD;AAED,qBAAa,WAAY,YAAW,KAAK;aAIvB,EAAE,EAAE,MAAM;aACV,SAAS,EAAE,IAAI;aACf,SAAS,EAAE,IAAI;aACf,UAAU,EAAE,MAAM;aAClB,aAAa,EAAE,MAAM;aACrB,KAAK,EAAE,MAAM,EAAE;aACf,SAAS,EAAE,MAAM;IATlC,SAAgB,IAAI,oBAAmB;gBAGtB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM;CAGlC"}