@cqrs-ddd/mikro-orm 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cache/mikro-orm.cache.d.ts +1 -8
- package/dist/cache/mikro-orm.cache.d.ts.map +1 -1
- package/dist/cache/mikro-orm.cache.js +56 -55
- package/dist/cache/mikro-orm.cache.js.map +1 -1
- package/dist/repository/aggregate.repository.d.ts.map +1 -1
- package/dist/repository/aggregate.repository.js +7 -26
- package/dist/repository/aggregate.repository.js.map +1 -1
- package/dist/tenancy/tenant-store.d.ts +2 -0
- package/dist/tenancy/tenant-store.d.ts.map +1 -1
- package/dist/tenancy/tenant-store.js +6 -1
- package/dist/tenancy/tenant-store.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ the database, and the `EntitySchema` mapping of `RootEntity`.
|
|
|
16
16
|
pnpm add @cqrs-ddd/mikro-orm @cqrs-ddd/core @mikro-orm/core
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Requires Node.js 22.17 or later, as MikroORM 7 does. `@cqrs-ddd/core` `^0.
|
|
19
|
+
Requires Node.js 22.17 or later, as MikroORM 7 does. `@cqrs-ddd/core` `^0.6.0` and `@mikro-orm/core` `^7.2.3` are peer
|
|
20
20
|
dependencies; add the MikroORM driver you use, such as `@mikro-orm/postgresql`.
|
|
21
21
|
|
|
22
22
|
Published as an ES module; a CommonJS application loads it with `require()`.
|
|
@@ -2,14 +2,6 @@ import { type CacheFillOptions, type CacheSetOptions, type CacheStateEntry, type
|
|
|
2
2
|
import type { ICacheLogger } from '@cqrs-ddd/core/persistence';
|
|
3
3
|
import type { EntityManager } from '@mikro-orm/core';
|
|
4
4
|
import type { IEntityManagerSource } from '../interfaces/entity-manager-source.js';
|
|
5
|
-
/**
|
|
6
|
-
* An {@link IEntityManagerSource} that can also run work in a transaction.
|
|
7
|
-
*
|
|
8
|
-
* `transactional` must run `work` on a manager dedicated to that call, never on
|
|
9
|
-
* the caller's request or transaction manager, so the cache's compare-and-set
|
|
10
|
-
* steps commit on their own and never join a surrounding unit of work.
|
|
11
|
-
* `em.fork().transactional(work)` satisfies it.
|
|
12
|
-
*/
|
|
13
5
|
export interface ITransactionalEntityManagerSource extends IEntityManagerSource {
|
|
14
6
|
transactional<T>(work: (em: EntityManager) => Promise<T>): Promise<T>;
|
|
15
7
|
}
|
|
@@ -72,6 +64,7 @@ export declare class MikroOrmCache<T> implements IVersionedCache<T> {
|
|
|
72
64
|
* row is kept.
|
|
73
65
|
*/
|
|
74
66
|
delete(key: string): Promise<void>;
|
|
67
|
+
private contentOf;
|
|
75
68
|
/**
|
|
76
69
|
* The parsed value of an entry that holds one and has not expired; an
|
|
77
70
|
* unparsable value is reported and read as absent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.cache.d.ts","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro-orm.cache.d.ts","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAoEnF,MAAM,WAAW,iCACf,SAAQ,oBAAoB;IAC5B,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvE;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAmBD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAOvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,QAAQ,CAAC,WAAW,OAAiB;IAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,YACmB,KAAK,EAAE,iCAAiC,EACzD,OAAO,CAAC,EAAE,oBAAoB,EAI/B;IAED;;;OAGG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA0BxD;IAED;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7C;IAED;;;OAGG;IACG,OAAO,CACX,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAalB;IAED;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG7C;IAED;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBzE;IAED;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;IAED,OAAO,CAAC,SAAS;IAOjB;;;OAGG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
|
|
@@ -9,6 +9,34 @@ import { CacheEntry } from './cache-entry.js';
|
|
|
9
9
|
function readCommittedEntry(em, key) {
|
|
10
10
|
return em.findOne(CacheEntry, { key }, { refresh: true, disableIdentityMap: true });
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* An {@link IEntityManagerSource} that can also run work in a transaction.
|
|
14
|
+
*
|
|
15
|
+
* `transactional` must run `work` on a manager dedicated to that call, never on
|
|
16
|
+
* the caller's request or transaction manager, so the cache's compare-and-set
|
|
17
|
+
* steps commit on their own and never join a surrounding unit of work.
|
|
18
|
+
* `em.fork().transactional(work)` satisfies it.
|
|
19
|
+
*/
|
|
20
|
+
function revisionOf(entry) {
|
|
21
|
+
return (entry.revision ?? '0').toString();
|
|
22
|
+
}
|
|
23
|
+
/** Inserts the row of `key` at revision 1; a row that exists is left as it is. */
|
|
24
|
+
async function insertFirst(em, key, content) {
|
|
25
|
+
// `onConflictAction: 'ignore'` keeps a lost insert race from aborting
|
|
26
|
+
// the surrounding transaction, so the caller can re-read and retry.
|
|
27
|
+
await em.upsert(CacheEntry, { key, ...content, revision: '1' }, { onConflictAction: 'ignore' });
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Replaces the content of `existing` and advances its revision, if no other
|
|
31
|
+
* writer advanced it first.
|
|
32
|
+
*
|
|
33
|
+
* @returns The new revision, or `undefined` when the row changed meanwhile.
|
|
34
|
+
*/
|
|
35
|
+
async function advance(em, existing, content) {
|
|
36
|
+
const revision = (BigInt(revisionOf(existing)) + 1n).toString();
|
|
37
|
+
const affected = await em.nativeUpdate(CacheEntry, { key: existing.key, revision: existing.revision }, { ...content, revision });
|
|
38
|
+
return affected > 0 ? revision : undefined;
|
|
39
|
+
}
|
|
12
40
|
/**
|
|
13
41
|
* Upper bound on compare-and-set re-reads. Each iteration only repeats after a
|
|
14
42
|
* competing writer won the row, so the bound exists to guarantee termination if
|
|
@@ -56,7 +84,7 @@ export class MikroOrmCache {
|
|
|
56
84
|
if (!entry) {
|
|
57
85
|
return { status: 'miss', revision: '0' };
|
|
58
86
|
}
|
|
59
|
-
const revision = (entry
|
|
87
|
+
const revision = revisionOf(entry);
|
|
60
88
|
if (!entry.value) {
|
|
61
89
|
return { status: 'miss', revision };
|
|
62
90
|
}
|
|
@@ -81,19 +109,11 @@ export class MikroOrmCache {
|
|
|
81
109
|
* value, and advances revision on match.
|
|
82
110
|
*/
|
|
83
111
|
async tryFill(key, observedRevision, value, options) {
|
|
84
|
-
const
|
|
85
|
-
const expiresAt = ttl > 0 ? Date.now() + ttl : null;
|
|
86
|
-
const serialized = JSON.stringify(value);
|
|
112
|
+
const content = this.contentOf(value, options?.ttl);
|
|
87
113
|
return this.store.transactional(async (em) => {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
const affected = await em.nativeUpdate(CacheEntry, { key, revision: observedRevision }, {
|
|
93
|
-
value: serialized,
|
|
94
|
-
expiresAt,
|
|
95
|
-
revision: nextRevision,
|
|
96
|
-
});
|
|
114
|
+
if (observedRevision === '0')
|
|
115
|
+
return fillFirstRevision(em, key, content);
|
|
116
|
+
const affected = await em.nativeUpdate(CacheEntry, { key, revision: observedRevision }, { ...content, revision: (BigInt(observedRevision) + 1n).toString() });
|
|
97
117
|
return affected > 0;
|
|
98
118
|
});
|
|
99
119
|
}
|
|
@@ -108,33 +128,23 @@ export class MikroOrmCache {
|
|
|
108
128
|
* Stores a value in the relational cache table with transactional CAS concurrency safety.
|
|
109
129
|
*/
|
|
110
130
|
async set(key, value, options) {
|
|
111
|
-
const
|
|
112
|
-
const expiresAt = ttl > 0 ? Date.now() + ttl : null;
|
|
131
|
+
const content = this.contentOf(value, options?.ttl);
|
|
113
132
|
const isNewer = options?.isNewer;
|
|
114
|
-
|
|
115
|
-
const writeWithCas = async (em) => {
|
|
133
|
+
await this.store.transactional(async (em) => {
|
|
116
134
|
for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt++) {
|
|
117
135
|
const existing = await readCommittedEntry(em, key);
|
|
118
136
|
if (!existing) {
|
|
119
|
-
await em
|
|
137
|
+
await insertFirst(em, key, content);
|
|
120
138
|
continue;
|
|
121
139
|
}
|
|
122
140
|
const cached = isNewer ? this.unexpiredValue(existing, key) : undefined;
|
|
123
141
|
if (isNewer && cached !== undefined && isNewer(cached, value))
|
|
124
142
|
return;
|
|
125
|
-
|
|
126
|
-
const nextRevision = (BigInt(currentRev) + 1n).toString();
|
|
127
|
-
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
128
|
-
value: serialized,
|
|
129
|
-
expiresAt,
|
|
130
|
-
revision: nextRevision,
|
|
131
|
-
});
|
|
132
|
-
if (affected > 0)
|
|
143
|
+
if (await advance(em, existing, content))
|
|
133
144
|
return;
|
|
134
145
|
}
|
|
135
146
|
throw new CacheCasExhaustedError('set', key);
|
|
136
|
-
};
|
|
137
|
-
await this.store.transactional(writeWithCas);
|
|
147
|
+
});
|
|
138
148
|
}
|
|
139
149
|
/**
|
|
140
150
|
* Removes the value and advances the key's revision, as invalidate() does; the
|
|
@@ -143,6 +153,12 @@ export class MikroOrmCache {
|
|
|
143
153
|
async delete(key) {
|
|
144
154
|
await this.invalidate(key);
|
|
145
155
|
}
|
|
156
|
+
contentOf(value, ttl = this.defaultTtlMs) {
|
|
157
|
+
return {
|
|
158
|
+
value: JSON.stringify(value),
|
|
159
|
+
expiresAt: ttl > 0 ? Date.now() + ttl : null,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
146
162
|
/**
|
|
147
163
|
* The parsed value of an entry that holds one and has not expired; an
|
|
148
164
|
* unparsable value is reported and read as absent.
|
|
@@ -167,28 +183,19 @@ export class MikroOrmCache {
|
|
|
167
183
|
* loop, inserting the row at revision 1 when it does not exist.
|
|
168
184
|
*/
|
|
169
185
|
async function invalidateEntry(em, key) {
|
|
186
|
+
const cleared = { value: '', expiresAt: null };
|
|
170
187
|
for (let attempt = 0; attempt < MAX_CAS_ATTEMPTS; attempt++) {
|
|
171
188
|
const existing = await readCommittedEntry(em, key);
|
|
172
189
|
if (!existing) {
|
|
173
|
-
|
|
174
|
-
// the surrounding transaction, so the loop can re-read and retry.
|
|
175
|
-
await em.upsert(CacheEntry, { key, value: '', expiresAt: null, revision: '1' }, { onConflictAction: 'ignore' });
|
|
190
|
+
await insertFirst(em, key, cleared);
|
|
176
191
|
const inserted = await readCommittedEntry(em, key);
|
|
177
|
-
if (inserted && (inserted
|
|
192
|
+
if (inserted && revisionOf(inserted) === '1')
|
|
178
193
|
return '1';
|
|
179
|
-
}
|
|
180
194
|
continue;
|
|
181
195
|
}
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
value: '',
|
|
186
|
-
expiresAt: null,
|
|
187
|
-
revision: nextRevision,
|
|
188
|
-
});
|
|
189
|
-
if (affected > 0) {
|
|
190
|
-
return nextRevision;
|
|
191
|
-
}
|
|
196
|
+
const revision = await advance(em, existing, cleared);
|
|
197
|
+
if (revision)
|
|
198
|
+
return revision;
|
|
192
199
|
}
|
|
193
200
|
throw new CacheCasExhaustedError('invalidate', key);
|
|
194
201
|
}
|
|
@@ -196,23 +203,17 @@ async function invalidateEntry(em, key) {
|
|
|
196
203
|
* Fills a key observed at revision 0, absent or never revised, as revision 1;
|
|
197
204
|
* a row that a competing writer revised first is left as it is.
|
|
198
205
|
*/
|
|
199
|
-
async function fillFirstRevision(em,
|
|
206
|
+
async function fillFirstRevision(em, key, content) {
|
|
200
207
|
const existing = await readCommittedEntry(em, key);
|
|
201
208
|
if (!existing) {
|
|
202
|
-
await em
|
|
209
|
+
await insertFirst(em, key, content);
|
|
203
210
|
const inserted = await readCommittedEntry(em, key);
|
|
204
211
|
// A competing writer won the insert; this fill observed revision 0
|
|
205
212
|
// and must not overwrite it.
|
|
206
|
-
return inserted !== null && inserted.value ===
|
|
207
|
-
}
|
|
208
|
-
if ((existing.revision ?? '0').toString() === '0') {
|
|
209
|
-
const affected = await em.nativeUpdate(CacheEntry, { key, revision: existing.revision }, {
|
|
210
|
-
value: serialized,
|
|
211
|
-
expiresAt,
|
|
212
|
-
revision: '1',
|
|
213
|
-
});
|
|
214
|
-
return affected > 0;
|
|
213
|
+
return inserted !== null && inserted.value === content.value;
|
|
215
214
|
}
|
|
216
|
-
|
|
215
|
+
if (revisionOf(existing) !== '0')
|
|
216
|
+
return false;
|
|
217
|
+
return (await advance(em, existing, content)) !== undefined;
|
|
217
218
|
}
|
|
218
219
|
//# sourceMappingURL=mikro-orm.cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm.cache.js","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAAiB,EAAE,GAAW;IACxD,OAAO,EAAE,CAAC,OAAO,CACf,UAAU,EACV,EAAE,GAAG,EAAE,EACP,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC5C,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro-orm.cache.js","sourceRoot":"","sources":["../../src/cache/mikro-orm.cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.repository.d.ts","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"aggregate.repository.d.ts","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EACN,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,8BAAsB,mBAAmB,CACrC,SAAS,SAAS,OAAO,CAAC,kBAAkB,CAAC,EAC7C,OAAO,SAAS,UAAU,CAAC,SAAS,CAAC,EACrC,OAAO,GAAG,OAAO,CAEnB,SAAQ,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CACrD,YAAW,6BAA6B,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,oBAAoB;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO;IALhE,YACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EACL,KAAK,EAAE,oBAAoB,EAC3B,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,EAG/D;IAED;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAWlD;CACF"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
/* Copyright (C) 2026-present Aristotelis — see repository license. */
|
|
2
|
-
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
import { CommandRepository, MapPersistenceErrors, } from '@cqrs-ddd/core/persistence';
|
|
2
|
+
import { CommandRepository } from '@cqrs-ddd/core/persistence';
|
|
12
3
|
import { mapPersistenceError } from '../errors/transient-error.js';
|
|
13
4
|
/**
|
|
14
5
|
* Base class for the command repositories that load and save an existing aggregate.
|
|
@@ -72,23 +63,13 @@ export class AggregateRepository extends CommandRepository {
|
|
|
72
63
|
* @throws {TransientOperationError} If a retryable database connection or driver error occurs.
|
|
73
64
|
*/
|
|
74
65
|
async findById(id) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return null;
|
|
66
|
+
try {
|
|
67
|
+
const entity = await this.store.em.findOne(this.entityClass, { id }, { refresh: true });
|
|
68
|
+
return entity ? this.hydrateFn(entity.toJSON()) : null;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw mapPersistenceError(error, `loading ${this.aggregateName} ${id}`);
|
|
78
72
|
}
|
|
79
|
-
const snapshot = entity.toJSON();
|
|
80
|
-
return this.hydrateFn(snapshot);
|
|
81
73
|
}
|
|
82
74
|
}
|
|
83
|
-
__decorate([
|
|
84
|
-
MapPersistenceErrors({
|
|
85
|
-
entity: ([id]) => id,
|
|
86
|
-
otherwise(error, id) {
|
|
87
|
-
return mapPersistenceError(error, `loading ${this.aggregateName} ${id}`);
|
|
88
|
-
},
|
|
89
|
-
}),
|
|
90
|
-
__metadata("design:type", Function),
|
|
91
|
-
__metadata("design:paramtypes", [String]),
|
|
92
|
-
__metadata("design:returntype", Promise)
|
|
93
|
-
], AggregateRepository.prototype, "findById", null);
|
|
94
75
|
//# sourceMappingURL=aggregate.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.repository.js","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAAA,sEAAsE
|
|
1
|
+
{"version":3,"file":"aggregate.repository.js","sourceRoot":"","sources":["../../src/repository/aggregate.repository.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAOtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,OAAgB,mBAKpB,SAAQ,iBAA8C;IAKjC,KAAK;IACL,WAAW;IACX,aAAa;IACb,SAAS;IAL9B,YACE,KAAwB,EACL,KAA2B,EAC3B,WAAgC,EAChC,aAAqB,EACrB,SAA2C;QAE9D,KAAK,CAAC,KAAK,CAAC,CAAC;qBALM,KAAK;2BACL,WAAW;6BACX,aAAa;yBACb,SAAS;IAG9B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CACxC,IAAI,CAAC,WAAW,EAChB,EAAE,EAAE,EAA0B,EAC9B,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;YACF,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,mBAAmB,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;CACF"}
|
|
@@ -21,6 +21,8 @@ export interface TenantStoreOptions {
|
|
|
21
21
|
* `em` reuses a contextual manager (a MikroORM `RequestContext` or an active
|
|
22
22
|
* transaction) only when it belongs to the tenant's ORM, configuration, driver
|
|
23
23
|
* and schema and no other tenant claimed it first; otherwise it forks one.
|
|
24
|
+
* Under `'schema'` isolation the contextual manager must be on the tenant's
|
|
25
|
+
* schema: one without a schema is never reused.
|
|
24
26
|
* `transactional()` always runs on a fresh fork. Every manager it hands out is
|
|
25
27
|
* recorded to its tenant outside the manager (a `WeakMap`), so a later request
|
|
26
28
|
* for another tenant cannot reuse it; MikroORM objects are never modified.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-store.d.ts","sourceRoot":"","sources":["../../src/tenancy/tenant-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpD,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,MAAM,IAAI,MAAM,CAAC;IACjB,kFAAkF;IAClF,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"tenant-store.d.ts","sourceRoot":"","sources":["../../src/tenancy/tenant-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpD,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,MAAM,IAAI,MAAM,CAAC;IACjB,kFAAkF;IAClF,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9B,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,WAAW,CAAC,QAAQ,SAAS,aAAa,GAAG,aAAa,CACrE,YAAW,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,YAA6B,OAAO,EAAE,kBAAkB,EAAI;IAE5D;;;;;OAKG;IACH,IAAI,EAAE,IAAI,QAAQ,CASjB;IAED;;;;;;;;;OASG;IACG,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAIrE;IAED,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,QAAQ;CAiBjB"}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* `em` reuses a contextual manager (a MikroORM `RequestContext` or an active
|
|
8
8
|
* transaction) only when it belongs to the tenant's ORM, configuration, driver
|
|
9
9
|
* and schema and no other tenant claimed it first; otherwise it forks one.
|
|
10
|
+
* Under `'schema'` isolation the contextual manager must be on the tenant's
|
|
11
|
+
* schema: one without a schema is never reused.
|
|
10
12
|
* `transactional()` always runs on a fresh fork. Every manager it hands out is
|
|
11
13
|
* recorded to its tenant outside the manager (a `WeakMap`), so a later request
|
|
12
14
|
* for another tenant cannot reuse it; MikroORM objects are never modified.
|
|
@@ -69,9 +71,12 @@ export class TenantStore {
|
|
|
69
71
|
}
|
|
70
72
|
canReuse(context, orm, tenant) {
|
|
71
73
|
const owner = this.owners.get(context);
|
|
74
|
+
// Under schema isolation a manager without a schema reads the default
|
|
75
|
+
// schema, which belongs to no tenant.
|
|
76
|
+
const schema = this.options.isolation === 'schema' ? tenant : undefined;
|
|
72
77
|
return (context !== orm.em &&
|
|
73
78
|
(owner === undefined || owner === tenant) &&
|
|
74
|
-
(context.schema ===
|
|
79
|
+
(context.schema === schema || context.schema === tenant) &&
|
|
75
80
|
context.config === orm.config &&
|
|
76
81
|
context.getDriver() === orm.em.getDriver());
|
|
77
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-store.js","sourceRoot":"","sources":["../../src/tenancy/tenant-store.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAoBtE
|
|
1
|
+
{"version":3,"file":"tenant-store.js","sourceRoot":"","sources":["../../src/tenancy/tenant-store.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAoBtE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,WAAW;IAKO,OAAO;IAFnB,MAAM,GAAG,IAAI,OAAO,EAAkB,CAAC;IAExD,YAA6B,OAA2B;uBAA3B,OAAO;IAAuB,CAAC;IAE5D;;;;;OAKG;IACH,IAAI,EAAE;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,OAAmB,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CAAI,IAAkC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAc,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,IAAI,CAAC,GAAa,EAAE,MAAc;QACxC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YACrB,wBAAwB,EAAE,IAAI;YAC9B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAa,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,QAAQ,CACd,OAAsB,EACtB,GAAa,EACb,MAAc;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,sEAAsE;QACtE,sCAAsC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,OAAO,CACL,OAAO,KAAK,GAAG,CAAC,EAAE;YAClB,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC;YACzC,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;YACxD,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;YAC7B,OAAO,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAC3C,CAAC;IACJ,CAAC;CACF;AAED,SAAS,SAAS,CAAC,GAAa;IAC9B,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cqrs-ddd/mikro-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "MikroORM persistence adapters for @cqrs-ddd/core: authoritative aggregate loading, version-conditioned writes, a revision-fenced cache and root-entity schema mapping.",
|
|
5
5
|
"author": "Aristotelis",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@cqrs-ddd/core": "^0.
|
|
47
|
+
"@cqrs-ddd/core": "^0.6.0",
|
|
48
48
|
"@mikro-orm/core": "^7.2.3"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@cqrs-ddd/core": "^0.
|
|
51
|
+
"@cqrs-ddd/core": "^0.6.0",
|
|
52
52
|
"@mikro-orm/core": "^7.2.3",
|
|
53
53
|
"@vitest/coverage-v8": "^5.0.5",
|
|
54
54
|
"typescript": "^7.0.2",
|