@magek/adapter-read-model-store-nedb 0.0.5 → 0.0.7
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.js
CHANGED
|
@@ -10,7 +10,7 @@ const readModelRegistry = new read_model_registry_1.ReadModelRegistry();
|
|
|
10
10
|
async function countAll(database) {
|
|
11
11
|
await database.loadDatabaseIfNeeded();
|
|
12
12
|
const count = await database.readModels.countAsync({});
|
|
13
|
-
return count
|
|
13
|
+
return count ?? 0;
|
|
14
14
|
}
|
|
15
15
|
exports.readModelStore = {
|
|
16
16
|
fetch: async (config, readModelName, readModelID, sequenceKey) => {
|
|
@@ -21,11 +21,10 @@ exports.readModelStore = {
|
|
|
21
21
|
return result;
|
|
22
22
|
},
|
|
23
23
|
search: async (config, readModelName, filters, sortBy, limit, afterCursor, paginatedVersion, select) => {
|
|
24
|
-
return await (0, read_model_adapter_1.searchReadModel)(readModelRegistry, config, readModelName, filters, sortBy, limit, afterCursor, paginatedVersion
|
|
24
|
+
return await (0, read_model_adapter_1.searchReadModel)(readModelRegistry, config, readModelName, filters, sortBy, limit, afterCursor, paginatedVersion ?? false, select);
|
|
25
25
|
},
|
|
26
26
|
store: async (config, readModelName, readModel) => {
|
|
27
|
-
|
|
28
|
-
const expectedCurrentVersion = ((_a = readModel.version) !== null && _a !== void 0 ? _a : 1) - 1;
|
|
27
|
+
const expectedCurrentVersion = (readModel.version ?? 1) - 1;
|
|
29
28
|
await (0, read_model_adapter_1.storeReadModel)(readModelRegistry, config, readModelName, readModel.value, expectedCurrentVersion);
|
|
30
29
|
// Return the stored envelope with updated timestamps
|
|
31
30
|
return {
|
|
@@ -44,20 +44,19 @@ async function storeReadModel(db, config, readModelName, readModel, expectedCurr
|
|
|
44
44
|
logger.debug('Read model stored');
|
|
45
45
|
}
|
|
46
46
|
async function searchReadModel(db, config, readModelName, filters, sortBy, limit, afterCursor, paginatedVersion = false, select) {
|
|
47
|
-
var _a, _b;
|
|
48
47
|
const logger = (0, common_1.getLogger)(config, 'read-model-adapter#searchReadModel');
|
|
49
48
|
logger.debug('Converting filter to query');
|
|
50
49
|
const queryFor = (0, searcher_adapter_1.queryRecordFor)(filters);
|
|
51
50
|
const query = { ...queryFor, typeName: readModelName };
|
|
52
51
|
logger.debug('Got query ', query);
|
|
53
|
-
const skipId =
|
|
52
|
+
const skipId = afterCursor?.id ? parseInt(afterCursor?.id) : 0;
|
|
54
53
|
const result = await db.query(query, sortBy, skipId, limit, select);
|
|
55
54
|
logger.debug('Search result: ', result);
|
|
56
|
-
const items =
|
|
55
|
+
const items = result?.map((envelope) => envelope.value) ?? [];
|
|
57
56
|
if (paginatedVersion) {
|
|
58
57
|
return {
|
|
59
58
|
items: items,
|
|
60
|
-
count:
|
|
59
|
+
count: items?.length ?? 0,
|
|
61
60
|
cursor: { id: ((limit ? limit : 1) + skipId).toString() },
|
|
62
61
|
};
|
|
63
62
|
}
|
|
@@ -5,8 +5,9 @@ const paths_1 = require("./paths");
|
|
|
5
5
|
const DataStore = require('@seald-io/nedb');
|
|
6
6
|
exports.UNIQUE_VIOLATED_ERROR_TYPE = 'uniqueViolated';
|
|
7
7
|
class ReadModelRegistry {
|
|
8
|
+
readModels;
|
|
9
|
+
isLoaded = false;
|
|
8
10
|
constructor() {
|
|
9
|
-
this.isLoaded = false;
|
|
10
11
|
this.readModels = new DataStore({ filename: paths_1.readModelsDatabase });
|
|
11
12
|
}
|
|
12
13
|
async loadDatabaseIfNeeded() {
|
|
@@ -40,11 +41,10 @@ class ReadModelRegistry {
|
|
|
40
41
|
return results;
|
|
41
42
|
}
|
|
42
43
|
async store(readModel, expectedCurrentVersion) {
|
|
43
|
-
var _a, _b;
|
|
44
44
|
await this.loadDatabaseIfNeeded();
|
|
45
45
|
const uniqueReadModel = readModel;
|
|
46
|
-
uniqueReadModel.uniqueKey = `${readModel.typeName}_${readModel.value.id}_${
|
|
47
|
-
if (
|
|
46
|
+
uniqueReadModel.uniqueKey = `${readModel.typeName}_${readModel.value.id}_${readModel.value.magekMetadata?.version}`;
|
|
47
|
+
if (uniqueReadModel.value.magekMetadata?.version === 1) {
|
|
48
48
|
return this.insert(readModel);
|
|
49
49
|
}
|
|
50
50
|
return this.update(uniqueReadModel, expectedCurrentVersion);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@magek/adapter-read-model-store-nedb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Nedb-based read model store adapter for the Magek framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"read-model-store",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"node": ">=22.0.0 <23.0.0"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@magek/common": "^0.0.
|
|
27
|
+
"@magek/common": "^0.0.7",
|
|
28
28
|
"@seald-io/nedb": "4.1.2",
|
|
29
29
|
"tslib": "2.8.1"
|
|
30
30
|
},
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"url": "https://github.com/theam/magek/issues"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@magek/eslint-config": "^0.0.
|
|
35
|
+
"@magek/eslint-config": "^0.0.7",
|
|
36
36
|
"@types/chai": "5.2.3",
|
|
37
37
|
"@types/chai-as-promised": "8.0.2",
|
|
38
38
|
"@types/mocha": "10.0.10",
|