@acmekit/index 2.13.1
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/README.md +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/index.d.ts +4 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +27 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/migrations/Migration20231019174230.d.ts +5 -0
- package/dist/migrations/Migration20231019174230.d.ts.map +1 -0
- package/dist/migrations/Migration20231019174230.js +12 -0
- package/dist/migrations/Migration20231019174230.js.map +1 -0
- package/dist/migrations/Migration20241209173313.d.ts +6 -0
- package/dist/migrations/Migration20241209173313.d.ts.map +1 -0
- package/dist/migrations/Migration20241209173313.js +36 -0
- package/dist/migrations/Migration20241209173313.js.map +1 -0
- package/dist/migrations/Migration20250122154720.d.ts +6 -0
- package/dist/migrations/Migration20250122154720.d.ts.map +1 -0
- package/dist/migrations/Migration20250122154720.js +16 -0
- package/dist/migrations/Migration20250122154720.js.map +1 -0
- package/dist/migrations/Migration20250127105159.d.ts +6 -0
- package/dist/migrations/Migration20250127105159.d.ts.map +1 -0
- package/dist/migrations/Migration20250127105159.js +16 -0
- package/dist/migrations/Migration20250127105159.js.map +1 -0
- package/dist/migrations/Migration20250127144442.d.ts +6 -0
- package/dist/migrations/Migration20250127144442.d.ts.map +1 -0
- package/dist/migrations/Migration20250127144442.js +16 -0
- package/dist/migrations/Migration20250127144442.js.map +1 -0
- package/dist/migrations/Migration20250128132404.d.ts +6 -0
- package/dist/migrations/Migration20250128132404.d.ts.map +1 -0
- package/dist/migrations/Migration20250128132404.js +16 -0
- package/dist/migrations/Migration20250128132404.js.map +1 -0
- package/dist/migrations/Migration20250218132404.d.ts +6 -0
- package/dist/migrations/Migration20250218132404.d.ts.map +1 -0
- package/dist/migrations/Migration20250218132404.js +48 -0
- package/dist/migrations/Migration20250218132404.js.map +1 -0
- package/dist/migrations/Migration20250515161913.d.ts +6 -0
- package/dist/migrations/Migration20250515161913.d.ts.map +1 -0
- package/dist/migrations/Migration20250515161913.js +62 -0
- package/dist/migrations/Migration20250515161913.js.map +1 -0
- package/dist/models/index-data.d.ts +8 -0
- package/dist/models/index-data.d.ts.map +1 -0
- package/dist/models/index-data.js +12 -0
- package/dist/models/index-data.js.map +1 -0
- package/dist/models/index-metadata.d.ts +10 -0
- package/dist/models/index-metadata.d.ts.map +1 -0
- package/dist/models/index-metadata.js +23 -0
- package/dist/models/index-metadata.js.map +1 -0
- package/dist/models/index-relation.d.ts +11 -0
- package/dist/models/index-relation.d.ts.map +1 -0
- package/dist/models/index-relation.js +14 -0
- package/dist/models/index-relation.js.map +1 -0
- package/dist/models/index-sync.d.ts +7 -0
- package/dist/models/index-sync.d.ts.map +1 -0
- package/dist/models/index-sync.js +18 -0
- package/dist/models/index-sync.js.map +1 -0
- package/dist/models/index.d.ts +5 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +15 -0
- package/dist/models/index.js.map +1 -0
- package/dist/services/data-synchronizer.d.ts +35 -0
- package/dist/services/data-synchronizer.d.ts.map +1 -0
- package/dist/services/data-synchronizer.js +238 -0
- package/dist/services/data-synchronizer.js.map +1 -0
- package/dist/services/index-data.d.ts +8 -0
- package/dist/services/index-data.d.ts.map +1 -0
- package/dist/services/index-data.js +9 -0
- package/dist/services/index-data.js.map +1 -0
- package/dist/services/index-metadata.d.ts +8 -0
- package/dist/services/index-metadata.d.ts.map +1 -0
- package/dist/services/index-metadata.js +9 -0
- package/dist/services/index-metadata.js.map +1 -0
- package/dist/services/index-module-service.d.ts +75 -0
- package/dist/services/index-module-service.d.ts.map +1 -0
- package/dist/services/index-module-service.js +340 -0
- package/dist/services/index-module-service.js.map +1 -0
- package/dist/services/index-relation.d.ts +8 -0
- package/dist/services/index-relation.d.ts.map +1 -0
- package/dist/services/index-relation.js +9 -0
- package/dist/services/index-relation.js.map +1 -0
- package/dist/services/index-sync.d.ts +8 -0
- package/dist/services/index-sync.d.ts.map +1 -0
- package/dist/services/index-sync.js +9 -0
- package/dist/services/index-sync.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +9 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/postgres-provider.d.ts +132 -0
- package/dist/services/postgres-provider.d.ts.map +1 -0
- package/dist/services/postgres-provider.js +516 -0
- package/dist/services/postgres-provider.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/base-graphql-schema.d.ts +2 -0
- package/dist/utils/base-graphql-schema.d.ts.map +1 -0
- package/dist/utils/base-graphql-schema.js +10 -0
- package/dist/utils/base-graphql-schema.js.map +1 -0
- package/dist/utils/build-config.d.ts +28 -0
- package/dist/utils/build-config.d.ts.map +1 -0
- package/dist/utils/build-config.js +840 -0
- package/dist/utils/build-config.js.map +1 -0
- package/dist/utils/create-partitions.d.ts +4 -0
- package/dist/utils/create-partitions.d.ts.map +1 -0
- package/dist/utils/create-partitions.js +80 -0
- package/dist/utils/create-partitions.js.map +1 -0
- package/dist/utils/default-schema.d.ts +2 -0
- package/dist/utils/default-schema.d.ts.map +1 -0
- package/dist/utils/default-schema.js +41 -0
- package/dist/utils/default-schema.js.map +1 -0
- package/dist/utils/flatten-object-keys.d.ts +23 -0
- package/dist/utils/flatten-object-keys.d.ts.map +1 -0
- package/dist/utils/flatten-object-keys.js +54 -0
- package/dist/utils/flatten-object-keys.js.map +1 -0
- package/dist/utils/gql-to-types.d.ts +3 -0
- package/dist/utils/gql-to-types.d.ts.map +1 -0
- package/dist/utils/gql-to-types.js +98 -0
- package/dist/utils/gql-to-types.js.map +1 -0
- package/dist/utils/index-metadata-status.d.ts +7 -0
- package/dist/utils/index-metadata-status.d.ts.map +1 -0
- package/dist/utils/index-metadata-status.js +11 -0
- package/dist/utils/index-metadata-status.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +26 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/normalize-fields-selection.d.ts +2 -0
- package/dist/utils/normalize-fields-selection.d.ts.map +1 -0
- package/dist/utils/normalize-fields-selection.js +10 -0
- package/dist/utils/normalize-fields-selection.js.map +1 -0
- package/dist/utils/normalze-table-name.d.ts +3 -0
- package/dist/utils/normalze-table-name.d.ts.map +1 -0
- package/dist/utils/normalze-table-name.js +13 -0
- package/dist/utils/normalze-table-name.js.map +1 -0
- package/dist/utils/query-builder.d.ts +61 -0
- package/dist/utils/query-builder.d.ts.map +1 -0
- package/dist/utils/query-builder.js +791 -0
- package/dist/utils/query-builder.js.map +1 -0
- package/dist/utils/sync/configuration.d.ts +17 -0
- package/dist/utils/sync/configuration.d.ts.map +1 -0
- package/dist/utils/sync/configuration.js +114 -0
- package/dist/utils/sync/configuration.js.map +1 -0
- package/dist/utils/sync/orchestrator.d.ts +33 -0
- package/dist/utils/sync/orchestrator.d.ts.map +1 -0
- package/dist/utils/sync/orchestrator.js +195 -0
- package/dist/utils/sync/orchestrator.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAmD;AAA1C,wHAAA,OAAO,OAAa;AAC7B,mDAA2D;AAAlD,gIAAA,OAAO,OAAiB;AACjC,mDAA2D;AAAlD,gIAAA,OAAO,OAAiB;AACjC,2CAAmD;AAA1C,wHAAA,OAAO,OAAa"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IndexTypes } from "@acmekit/types";
|
|
2
|
+
export declare class DataSynchronizer {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(container: Record<string, any>);
|
|
5
|
+
onApplicationStart({ schemaObjectRepresentation, storageProvider, }: {
|
|
6
|
+
lockDuration?: number;
|
|
7
|
+
schemaObjectRepresentation: IndexTypes.SchemaObjectRepresentation;
|
|
8
|
+
storageProvider: IndexTypes.StorageProvider;
|
|
9
|
+
}): void;
|
|
10
|
+
syncEntities(entities: {
|
|
11
|
+
entity: string;
|
|
12
|
+
fields: string;
|
|
13
|
+
fields_hash: string;
|
|
14
|
+
}[], lockDuration?: number): Promise<void>;
|
|
15
|
+
removeEntities(entities: string[], staleOnly?: boolean): Promise<void>;
|
|
16
|
+
syncEntity({ entityName, pagination, ack, }: {
|
|
17
|
+
entityName: string;
|
|
18
|
+
pagination?: {
|
|
19
|
+
cursor?: string;
|
|
20
|
+
updated_at?: string | Date;
|
|
21
|
+
limit?: number;
|
|
22
|
+
batchSize?: number;
|
|
23
|
+
};
|
|
24
|
+
ack: (ack: {
|
|
25
|
+
lastCursor: string | null;
|
|
26
|
+
done?: boolean;
|
|
27
|
+
err?: Error;
|
|
28
|
+
}) => Promise<void>;
|
|
29
|
+
}): Promise<{
|
|
30
|
+
lastCursor: string | null;
|
|
31
|
+
done?: boolean;
|
|
32
|
+
err?: Error;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data-synchronizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-synchronizer.d.ts","sourceRoot":"","sources":["../../src/services/data-synchronizer.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,UAAU,EAKX,MAAM,gBAAgB,CAAA;AAGvB,qBAAa,gBAAgB;;gBAsCf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAY1C,kBAAkB,CAAC,EACjB,0BAA0B,EAC1B,eAAe,GAChB,EAAE;QACD,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,0BAA0B,EAAE,UAAU,CAAC,0BAA0B,CAAA;QACjE,eAAe,EAAE,UAAU,CAAC,eAAe,CAAA;KAC5C;IAOK,YAAY,CAChB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;KACpB,EAAE,EACH,YAAY,GAAE,MAAW;IAWrB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,OAAe;IAsH7D,UAAU,CAAC,EACf,UAAU,EACV,UAAe,EACf,GAAG,GACJ,EAAE;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;YAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,SAAS,CAAC,EAAE,MAAM,CAAA;SACnB,CAAA;QACD,GAAG,EAAE,CAAC,GAAG,EAAE;YACT,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;YACzB,IAAI,CAAC,EAAE,OAAO,CAAA;YACd,GAAG,CAAC,EAAE,KAAK,CAAA;SACZ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KACpB,GAAG,OAAO,CAAC;QACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,GAAG,CAAC,EAAE,KAAK,CAAA;KACZ,CAAC;CAiHH"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _DataSynchronizer_instances, _DataSynchronizer_container, _DataSynchronizer_isReady, _DataSynchronizer_schemaObjectRepresentation, _DataSynchronizer_storageProvider, _DataSynchronizer_orchestrator, _DataSynchronizer_query_get, _DataSynchronizer_locking_get, _DataSynchronizer_indexMetadataService_get, _DataSynchronizer_indexSyncService_get, _DataSynchronizer_indexRelationService_get, _DataSynchronizer_logger_get, _DataSynchronizer_isReadyOrThrow, _DataSynchronizer_updatedStatus, _DataSynchronizer_taskRunner;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DataSynchronizer = void 0;
|
|
16
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
17
|
+
const _utils_1 = require("../utils");
|
|
18
|
+
const promises_1 = require("timers/promises");
|
|
19
|
+
class DataSynchronizer {
|
|
20
|
+
constructor(container) {
|
|
21
|
+
_DataSynchronizer_instances.add(this);
|
|
22
|
+
_DataSynchronizer_container.set(this, void 0);
|
|
23
|
+
_DataSynchronizer_isReady.set(this, false);
|
|
24
|
+
_DataSynchronizer_schemaObjectRepresentation.set(this, void 0);
|
|
25
|
+
_DataSynchronizer_storageProvider.set(this, void 0);
|
|
26
|
+
_DataSynchronizer_orchestrator.set(this, void 0);
|
|
27
|
+
__classPrivateFieldSet(this, _DataSynchronizer_container, container, "f");
|
|
28
|
+
}
|
|
29
|
+
onApplicationStart({ schemaObjectRepresentation, storageProvider, }) {
|
|
30
|
+
__classPrivateFieldSet(this, _DataSynchronizer_storageProvider, storageProvider, "f");
|
|
31
|
+
__classPrivateFieldSet(this, _DataSynchronizer_schemaObjectRepresentation, schemaObjectRepresentation, "f");
|
|
32
|
+
__classPrivateFieldSet(this, _DataSynchronizer_isReady, true, "f");
|
|
33
|
+
}
|
|
34
|
+
async syncEntities(entities, lockDuration = 60 // 1 minute
|
|
35
|
+
) {
|
|
36
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_isReadyOrThrow).call(this);
|
|
37
|
+
const entitiesToSync = entities.map((entity) => entity.entity);
|
|
38
|
+
__classPrivateFieldSet(this, _DataSynchronizer_orchestrator, new _utils_1.Orchestrator(__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_locking_get), entitiesToSync, {
|
|
39
|
+
lockDuration,
|
|
40
|
+
logger: __classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get),
|
|
41
|
+
}), "f");
|
|
42
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_orchestrator, "f").process(__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_taskRunner).bind(this));
|
|
43
|
+
}
|
|
44
|
+
async removeEntities(entities, staleOnly = false) {
|
|
45
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_isReadyOrThrow).call(this);
|
|
46
|
+
const staleCondition = staleOnly ? "staled_at IS NOT NULL" : "";
|
|
47
|
+
for (const entity of entities) {
|
|
48
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_container, "f").manager.execute(`WITH deleted_data AS (
|
|
49
|
+
DELETE FROM "index_data"
|
|
50
|
+
WHERE "name" = ? ${staleCondition ? `AND ${staleCondition}` : ""}
|
|
51
|
+
RETURNING id
|
|
52
|
+
)
|
|
53
|
+
DELETE FROM "index_relation"
|
|
54
|
+
WHERE ("parent_name" = ? AND "parent_id" IN (SELECT id FROM deleted_data))
|
|
55
|
+
OR ("child_name" = ? AND "child_id" IN (SELECT id FROM deleted_data))`, [entity, entity, entity]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async syncEntity({ entityName, pagination = {}, ack, }) {
|
|
59
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_isReadyOrThrow).call(this);
|
|
60
|
+
const schemaEntityObjectRepresentation = __classPrivateFieldGet(this, _DataSynchronizer_schemaObjectRepresentation, "f")[entityName];
|
|
61
|
+
const { alias, moduleConfig } = schemaEntityObjectRepresentation;
|
|
62
|
+
const isLink = !!moduleConfig?.isLink;
|
|
63
|
+
if (!alias) {
|
|
64
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get).info(`[Index engine] Cannot find Entity '${entityName}' alias. Skipping.`);
|
|
65
|
+
const acknoledgement = {
|
|
66
|
+
lastCursor: pagination.cursor ?? null,
|
|
67
|
+
done: true,
|
|
68
|
+
};
|
|
69
|
+
await ack(acknoledgement);
|
|
70
|
+
return acknoledgement;
|
|
71
|
+
}
|
|
72
|
+
const entityPrimaryKey = "id";
|
|
73
|
+
const moduleHasId = !!moduleConfig?.primaryKeys?.includes("id");
|
|
74
|
+
if (!moduleHasId) {
|
|
75
|
+
const acknoledgement = {
|
|
76
|
+
lastCursor: pagination.cursor ?? null,
|
|
77
|
+
err: new Error(`Entity ${entityName} does not have a property 'id'. The 'id' must be provided and must be orderable (e.g ulid)`),
|
|
78
|
+
};
|
|
79
|
+
await ack(acknoledgement);
|
|
80
|
+
return acknoledgement;
|
|
81
|
+
}
|
|
82
|
+
let processed = 0;
|
|
83
|
+
let currentCursor = pagination.cursor;
|
|
84
|
+
const batchSize = Math.min(pagination.batchSize ?? 100, 100);
|
|
85
|
+
const limit = pagination.limit ?? Infinity;
|
|
86
|
+
let error = null;
|
|
87
|
+
while (processed < limit) {
|
|
88
|
+
const filters = {};
|
|
89
|
+
if (currentCursor) {
|
|
90
|
+
filters[entityPrimaryKey] = { $gt: currentCursor };
|
|
91
|
+
}
|
|
92
|
+
if (pagination.updated_at) {
|
|
93
|
+
filters["updated_at"] = { $gt: pagination.updated_at };
|
|
94
|
+
}
|
|
95
|
+
const queryResult = await __classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_query_get).graph({
|
|
96
|
+
entity: alias,
|
|
97
|
+
fields: [entityPrimaryKey],
|
|
98
|
+
filters,
|
|
99
|
+
pagination: {
|
|
100
|
+
order: {
|
|
101
|
+
[entityPrimaryKey]: "asc",
|
|
102
|
+
},
|
|
103
|
+
take: batchSize,
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
if (!queryResult?.data?.length) {
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
const data = queryResult.data;
|
|
110
|
+
const envelop = {
|
|
111
|
+
data,
|
|
112
|
+
name: !isLink
|
|
113
|
+
? `*.${utils_1.CommonEvents.CREATED}`
|
|
114
|
+
: `*.${utils_1.CommonEvents.ATTACHED}`,
|
|
115
|
+
};
|
|
116
|
+
try {
|
|
117
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_storageProvider, "f").consumeEvent(schemaEntityObjectRepresentation)(envelop);
|
|
118
|
+
currentCursor = data[data.length - 1][entityPrimaryKey];
|
|
119
|
+
processed += data.length;
|
|
120
|
+
await ack({ lastCursor: currentCursor });
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
error = err;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
await (0, promises_1.setTimeout)(0, undefined, { ref: false });
|
|
127
|
+
}
|
|
128
|
+
let acknoledgement = {
|
|
129
|
+
lastCursor: currentCursor,
|
|
130
|
+
done: true,
|
|
131
|
+
};
|
|
132
|
+
if (error) {
|
|
133
|
+
acknoledgement = {
|
|
134
|
+
lastCursor: currentCursor,
|
|
135
|
+
err: error,
|
|
136
|
+
};
|
|
137
|
+
await ack(acknoledgement);
|
|
138
|
+
return acknoledgement;
|
|
139
|
+
}
|
|
140
|
+
await ack(acknoledgement);
|
|
141
|
+
return acknoledgement;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.DataSynchronizer = DataSynchronizer;
|
|
145
|
+
_DataSynchronizer_container = new WeakMap(), _DataSynchronizer_isReady = new WeakMap(), _DataSynchronizer_schemaObjectRepresentation = new WeakMap(), _DataSynchronizer_storageProvider = new WeakMap(), _DataSynchronizer_orchestrator = new WeakMap(), _DataSynchronizer_instances = new WeakSet(), _DataSynchronizer_query_get = function _DataSynchronizer_query_get() {
|
|
146
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f")[utils_1.ContainerRegistrationKeys.QUERY];
|
|
147
|
+
}, _DataSynchronizer_locking_get = function _DataSynchronizer_locking_get() {
|
|
148
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f")[utils_1.Modules.LOCKING];
|
|
149
|
+
}, _DataSynchronizer_indexMetadataService_get = function _DataSynchronizer_indexMetadataService_get() {
|
|
150
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f").indexMetadataService;
|
|
151
|
+
}, _DataSynchronizer_indexSyncService_get = function _DataSynchronizer_indexSyncService_get() {
|
|
152
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f").indexSyncService;
|
|
153
|
+
}, _DataSynchronizer_indexRelationService_get = function _DataSynchronizer_indexRelationService_get() {
|
|
154
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f").indexRelationService;
|
|
155
|
+
}, _DataSynchronizer_logger_get = function _DataSynchronizer_logger_get() {
|
|
156
|
+
try {
|
|
157
|
+
return __classPrivateFieldGet(this, _DataSynchronizer_container, "f").logger;
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
return console;
|
|
161
|
+
}
|
|
162
|
+
}, _DataSynchronizer_isReadyOrThrow = function _DataSynchronizer_isReadyOrThrow() {
|
|
163
|
+
if (!__classPrivateFieldGet(this, _DataSynchronizer_isReady, "f")) {
|
|
164
|
+
throw new Error("DataSynchronizer is not ready. Call onApplicationStart first.");
|
|
165
|
+
}
|
|
166
|
+
}, _DataSynchronizer_updatedStatus = async function _DataSynchronizer_updatedStatus(entity, status) {
|
|
167
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_indexMetadataService_get).update({
|
|
168
|
+
data: {
|
|
169
|
+
status,
|
|
170
|
+
},
|
|
171
|
+
selector: {
|
|
172
|
+
entity,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
}, _DataSynchronizer_taskRunner = async function _DataSynchronizer_taskRunner(entity) {
|
|
176
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get).info(`[Index engine] syncing entity '${entity}'`);
|
|
177
|
+
const [[lastCursor]] = await (0, utils_1.promiseAll)([
|
|
178
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_indexSyncService_get).list({
|
|
179
|
+
entity,
|
|
180
|
+
}, {
|
|
181
|
+
select: ["last_key"],
|
|
182
|
+
}),
|
|
183
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_updatedStatus).call(this, entity, _utils_1.IndexMetadataStatus.PROCESSING),
|
|
184
|
+
__classPrivateFieldGet(this, _DataSynchronizer_container, "f").manager.execute(`UPDATE "index_data" SET "staled_at" = NOW() WHERE "name" = ?`, [entity]),
|
|
185
|
+
]);
|
|
186
|
+
let startTime = performance.now();
|
|
187
|
+
let chunkStartTime = startTime;
|
|
188
|
+
const finalAcknoledgement = await this.syncEntity({
|
|
189
|
+
entityName: entity,
|
|
190
|
+
pagination: {
|
|
191
|
+
cursor: lastCursor?.last_key,
|
|
192
|
+
},
|
|
193
|
+
ack: async (ack) => {
|
|
194
|
+
const endTime = performance.now();
|
|
195
|
+
const chunkElapsedTime = (endTime - chunkStartTime).toFixed(2);
|
|
196
|
+
if (ack.lastCursor) {
|
|
197
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get).debug(`[Index engine] syncing entity '${entity}' updating last cursor to ${ack.lastCursor} (+${chunkElapsedTime}ms)`);
|
|
198
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_indexSyncService_get).update({
|
|
199
|
+
data: {
|
|
200
|
+
last_key: ack.lastCursor,
|
|
201
|
+
},
|
|
202
|
+
selector: {
|
|
203
|
+
entity,
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
if (!ack.done && !ack.err) {
|
|
207
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_orchestrator, "f").renewLock(entity);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (ack.err) {
|
|
211
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get).error(`[Index engine] syncing entity '${entity}' failed with error (+${chunkElapsedTime}ms):\n${ack.err.message}`);
|
|
212
|
+
}
|
|
213
|
+
if (ack.done) {
|
|
214
|
+
const elapsedTime = (endTime - startTime).toFixed(2);
|
|
215
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_logger_get).info(`[Index engine] syncing entity '${entity}' done (+${elapsedTime}ms)`);
|
|
216
|
+
}
|
|
217
|
+
chunkStartTime = performance.now();
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
if (finalAcknoledgement.done) {
|
|
221
|
+
await (0, utils_1.promiseAll)([
|
|
222
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_updatedStatus).call(this, entity, _utils_1.IndexMetadataStatus.DONE),
|
|
223
|
+
__classPrivateFieldGet(this, _DataSynchronizer_instances, "a", _DataSynchronizer_indexSyncService_get).update({
|
|
224
|
+
data: {
|
|
225
|
+
last_key: finalAcknoledgement.lastCursor,
|
|
226
|
+
},
|
|
227
|
+
selector: {
|
|
228
|
+
entity,
|
|
229
|
+
},
|
|
230
|
+
}),
|
|
231
|
+
this.removeEntities([entity], true),
|
|
232
|
+
]);
|
|
233
|
+
}
|
|
234
|
+
if (finalAcknoledgement.err) {
|
|
235
|
+
await __classPrivateFieldGet(this, _DataSynchronizer_instances, "m", _DataSynchronizer_updatedStatus).call(this, entity, _utils_1.IndexMetadataStatus.ERROR);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
//# sourceMappingURL=data-synchronizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-synchronizer.js","sourceRoot":"","sources":["../../src/services/data-synchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const IndexDataService_base: {
|
|
2
|
+
new <TContainer extends object = object, TEntity extends object = any>(container: TContainer): import("@acmekit/types").IAcmeKitInternalService<TEntity, TContainer>;
|
|
3
|
+
setEventSubscriber(subscriber: import("@acmekit/framework/utils").AcmeKitMikroOrmEventSubscriber): void;
|
|
4
|
+
};
|
|
5
|
+
export declare class IndexDataService extends IndexDataService_base {
|
|
6
|
+
}
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-data.d.ts","sourceRoot":"","sources":["../../src/services/index-data.ts"],"names":[],"mappings":";;;;AAGA,qBAAa,gBAAiB,SAAQ,qBAAiC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexDataService = void 0;
|
|
4
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
5
|
+
const _models_1 = require("../models");
|
|
6
|
+
class IndexDataService extends (0, utils_1.AcmeKitInternalService)(_models_1.IndexData) {
|
|
7
|
+
}
|
|
8
|
+
exports.IndexDataService = IndexDataService;
|
|
9
|
+
//# sourceMappingURL=index-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-data.js","sourceRoot":"","sources":["../../src/services/index-data.ts"],"names":[],"mappings":";;;AAAA,oDAAiE;AACjE,qCAAmC;AAEnC,MAAa,gBAAiB,SAAQ,IAAA,8BAAsB,EAAC,mBAAS,CAAC;CAAG;AAA1E,4CAA0E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const IndexMetadataService_base: {
|
|
2
|
+
new <TContainer extends object = object, TEntity extends object = any>(container: TContainer): import("@acmekit/types").IAcmeKitInternalService<TEntity, TContainer>;
|
|
3
|
+
setEventSubscriber(subscriber: import("@acmekit/framework/utils").AcmeKitMikroOrmEventSubscriber): void;
|
|
4
|
+
};
|
|
5
|
+
export declare class IndexMetadataService extends IndexMetadataService_base {
|
|
6
|
+
}
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-metadata.d.ts","sourceRoot":"","sources":["../../src/services/index-metadata.ts"],"names":[],"mappings":";;;;AAGA,qBAAa,oBAAqB,SAAQ,yBAEzC;CAAG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexMetadataService = void 0;
|
|
4
|
+
const utils_1 = require("@acmekit/framework/utils");
|
|
5
|
+
const _models_1 = require("../models");
|
|
6
|
+
class IndexMetadataService extends (0, utils_1.AcmeKitInternalService)(_models_1.IndexMetadata) {
|
|
7
|
+
}
|
|
8
|
+
exports.IndexMetadataService = IndexMetadataService;
|
|
9
|
+
//# sourceMappingURL=index-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-metadata.js","sourceRoot":"","sources":["../../src/services/index-metadata.ts"],"names":[],"mappings":";;;AAAA,oDAAiE;AACjE,qCAAuC;AAEvC,MAAa,oBAAqB,SAAQ,IAAA,8BAAsB,EAC9D,uBAAa,CACd;CAAG;AAFJ,oDAEI"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Constructor, Context, IEventBusModuleService, IndexTypes, InternalModuleDeclaration, Logger, ModulesSdkTypes, RemoteQueryFunction } from "@acmekit/framework/types";
|
|
2
|
+
import { MikroOrmBaseRepository as BaseRepository, ContainerRegistrationKeys, Modules, ModulesSdkUtils } from "@acmekit/framework/utils";
|
|
3
|
+
import { DataSynchronizer } from "./data-synchronizer";
|
|
4
|
+
type InjectedDependencies = {
|
|
5
|
+
logger: Logger;
|
|
6
|
+
[Modules.EVENT_BUS]: IEventBusModuleService;
|
|
7
|
+
storageProviderCtr: Constructor<IndexTypes.StorageProvider>;
|
|
8
|
+
[ContainerRegistrationKeys.QUERY]: RemoteQueryFunction;
|
|
9
|
+
storageProviderCtrOptions: unknown;
|
|
10
|
+
baseRepository: BaseRepository;
|
|
11
|
+
indexMetadataService: ModulesSdkTypes.IAcmeKitInternalService<any>;
|
|
12
|
+
indexSyncService: ModulesSdkTypes.IAcmeKitInternalService<any>;
|
|
13
|
+
dataSynchronizer: DataSynchronizer;
|
|
14
|
+
};
|
|
15
|
+
declare const IndexModuleService_base: ModulesSdkUtils.AcmeKitServiceReturnType<ModulesSdkUtils.ModelConfigurationsToConfigTemplate<{}>>;
|
|
16
|
+
export default class IndexModuleService extends IndexModuleService_base implements IndexTypes.IIndexService {
|
|
17
|
+
#private;
|
|
18
|
+
protected readonly moduleDeclaration: InternalModuleDeclaration;
|
|
19
|
+
private static readonly SyncSubscribersDescriptor;
|
|
20
|
+
private readonly baseRepository_;
|
|
21
|
+
private readonly container_;
|
|
22
|
+
private readonly moduleOptions_;
|
|
23
|
+
protected readonly eventBusModuleService_: IEventBusModuleService;
|
|
24
|
+
protected schemaObjectRepresentation_: IndexTypes.SchemaObjectRepresentation;
|
|
25
|
+
protected schemaEntitiesMap_: Record<string, any>;
|
|
26
|
+
protected readonly storageProviderCtr_: Constructor<IndexTypes.StorageProvider>;
|
|
27
|
+
protected readonly storageProviderCtrOptions_: unknown;
|
|
28
|
+
protected storageProvider_: IndexTypes.StorageProvider;
|
|
29
|
+
private configurationChecker_;
|
|
30
|
+
private get indexMetadataService_();
|
|
31
|
+
private get indexSyncService_();
|
|
32
|
+
private get dataSynchronizer_();
|
|
33
|
+
private get logger_();
|
|
34
|
+
constructor(container: InjectedDependencies, moduleOptions: IndexTypes.IndexModuleOptions, moduleDeclaration: InternalModuleDeclaration);
|
|
35
|
+
__hooks: {
|
|
36
|
+
onApplicationStart(this: IndexModuleService): Promise<void>;
|
|
37
|
+
};
|
|
38
|
+
protected onApplicationStart_(): Promise<void>;
|
|
39
|
+
query<const TEntry extends string>(config: IndexTypes.IndexQueryConfig<TEntry>): Promise<IndexTypes.QueryResultSet<TEntry>>;
|
|
40
|
+
protected registerListeners(): void;
|
|
41
|
+
private buildSchemaObjectRepresentation_;
|
|
42
|
+
/**
|
|
43
|
+
* Example output:
|
|
44
|
+
*
|
|
45
|
+
*
|
|
46
|
+
* ```json
|
|
47
|
+
* [
|
|
48
|
+
* {
|
|
49
|
+
* "id": "prod_123",
|
|
50
|
+
* "entity": "product",
|
|
51
|
+
* "status": "pending",
|
|
52
|
+
* "fields": ["id"],
|
|
53
|
+
* "updated_at": "<timestamp of last indexed data>",
|
|
54
|
+
* "last_synced_key": "prod_4321"
|
|
55
|
+
* },
|
|
56
|
+
* ...
|
|
57
|
+
* ]
|
|
58
|
+
* ```
|
|
59
|
+
* @returns Detailed index metadata with the last synced key for each entity
|
|
60
|
+
*/
|
|
61
|
+
getInfo(sharedContext?: Context): Promise<IndexTypes.IndexInfo[]>;
|
|
62
|
+
sync({ strategy }?: {
|
|
63
|
+
strategy?: "full" | "reset";
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Continue the sync of the entities no matter their status
|
|
67
|
+
* @param sharedContext
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
private continueSync;
|
|
71
|
+
private fullSync;
|
|
72
|
+
private resetSync;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=index-module-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-module-service.d.ts","sourceRoot":"","sources":["../../src/services/index-module-service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,OAAO,EAGP,sBAAsB,EACtB,UAAU,EAEV,yBAAyB,EACzB,MAAM,EACN,eAAe,EACf,mBAAmB,EACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,sBAAsB,IAAI,cAAc,EACxC,yBAAyB,EAIzB,OAAO,EACP,eAAe,EAGhB,MAAM,0BAA0B,CAAA;AAWjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAC3C,kBAAkB,EAAE,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;IAC3D,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAA;IACtD,yBAAyB,EAAE,OAAO,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,oBAAoB,EAAE,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAClE,gBAAgB,EAAE,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC9D,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAA;;AAED,MAAM,CAAC,OAAO,OAAO,kBACnB,SAAQ,uBACR,YAAW,UAAU,CAAC,aAAa;;IAqDjC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB;IAjDjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAOvC;IAEV,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAE9D,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAA;IAEjE,SAAS,CAAC,2BAA2B,EAAE,UAAU,CAAC,0BAA0B,CAAA;IAC5E,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAEjD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;IAC/E,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAA;IAEtD,SAAS,CAAC,gBAAgB,EAAE,UAAU,CAAC,eAAe,CAAA;IAEtD,OAAO,CAAC,qBAAqB,CAAe;IAE5C,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,OAAO,GAMlB;gBAGC,SAAS,EAAE,oBAAoB,EAC/B,aAAa,EAAE,UAAU,CAAC,kBAAkB,EACzB,iBAAiB,EAAE,yBAAyB;IA4BjE,OAAO;iCACoB,kBAAkB;MAG5C;cAEe,mBAAmB;IAkD7B,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,EACrC,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAC1C,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAI7C,SAAS,CAAC,iBAAiB;IAqC3B,OAAO,CAAC,gCAAgC;IAkBxC;;;;;;;;;;;;;;;;;;OAkBG;IAEG,OAAO,CACO,aAAa,CAAC,EAAE,OAAO,GACxC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAoC5B,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAO;IAoB7D;;;;OAIG;YACW,YAAY;YA8CZ,QAAQ;YAsDR,SAAS;CA0CxB"}
|