@owlmeans/mongo-resource 0.1.14 → 0.1.16-rc.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.
Files changed (53) hide show
  1. package/README.md +51 -6
  2. package/agent-meta/instructions/mongo-resource.instructions.md +44 -9
  3. package/agent-meta/manifest.json +2 -2
  4. package/agent-meta/skills/mongo-resource/SKILL.md +150 -17
  5. package/build/consts.d.ts +16 -0
  6. package/build/consts.d.ts.map +1 -1
  7. package/build/consts.js +16 -0
  8. package/build/consts.js.map +1 -1
  9. package/build/declarations.d.ts +11 -0
  10. package/build/declarations.d.ts.map +1 -0
  11. package/build/declarations.js +29 -0
  12. package/build/declarations.js.map +1 -0
  13. package/build/index.d.ts +3 -0
  14. package/build/index.d.ts.map +1 -1
  15. package/build/index.js +3 -0
  16. package/build/index.js.map +1 -1
  17. package/build/resource.d.ts.map +1 -1
  18. package/build/resource.js +58 -23
  19. package/build/resource.js.map +1 -1
  20. package/build/types.d.ts +53 -2
  21. package/build/types.d.ts.map +1 -1
  22. package/build/utils/index.d.ts +2 -0
  23. package/build/utils/index.d.ts.map +1 -1
  24. package/build/utils/index.js +2 -0
  25. package/build/utils/index.js.map +1 -1
  26. package/build/utils/life-cycle.d.ts +25 -1
  27. package/build/utils/life-cycle.d.ts.map +1 -1
  28. package/build/utils/life-cycle.js +89 -11
  29. package/build/utils/life-cycle.js.map +1 -1
  30. package/build/utils/migrations.d.ts +24 -0
  31. package/build/utils/migrations.d.ts.map +1 -0
  32. package/build/utils/migrations.js +129 -0
  33. package/build/utils/migrations.js.map +1 -0
  34. package/build/utils/refs.d.ts +74 -0
  35. package/build/utils/refs.d.ts.map +1 -0
  36. package/build/utils/refs.js +197 -0
  37. package/build/utils/refs.js.map +1 -0
  38. package/build/utils/schema.d.ts +8 -0
  39. package/build/utils/schema.d.ts.map +1 -1
  40. package/build/utils/schema.js +25 -0
  41. package/build/utils/schema.js.map +1 -1
  42. package/package.json +5 -5
  43. package/src/consts.ts +20 -0
  44. package/src/declarations.ts +42 -0
  45. package/src/index.ts +4 -1
  46. package/src/resource.ts +76 -28
  47. package/src/types.ts +58 -2
  48. package/src/utils/index.ts +2 -0
  49. package/src/utils/life-cycle.ts +117 -15
  50. package/src/utils/migrations.ts +171 -0
  51. package/src/utils/refs.ts +240 -0
  52. package/src/utils/schema.ts +32 -0
  53. package/tests/refs.spec.ts +95 -0
package/build/resource.js CHANGED
@@ -1,11 +1,24 @@
1
1
  import { appendContextual, assertContext } from '@owlmeans/context';
2
2
  import { DEFAULT_DB_ALIAS, DEFAULT_PAGE_SIZE } from './consts.js';
3
+ import { MigrationStage } from '@owlmeans/resource';
3
4
  import { initializeCollection } from './utils/life-cycle.js';
5
+ import { getDeclaration } from './declarations.js';
4
6
  import { ObjectId } from 'mongodb';
5
7
  import { MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed, prepareListOptions } from '@owlmeans/resource';
6
8
  import { getSchemaSecureFeilds } from './helper.js';
9
+ import { demarshalRefs, identityCriteria, makeRefMigration, marshalCriteria, marshalReference, refMigrationName } from './utils/refs.js';
7
10
  export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, makeCustomResource, collectionName) => {
8
11
  const location = `mongo-resource:${alias}`;
12
+ /**
13
+ * Live view — references may be declared after the resource is built, and the
14
+ * declarations are module scoped so they survive `reinitializeContext`.
15
+ */
16
+ const refs = () => getDeclaration(alias).references;
17
+ const demarshal = (record) => {
18
+ record.id = record._id instanceof ObjectId ? record._id.toString() : record._id;
19
+ delete record._id;
20
+ return demarshalRefs(record, refs());
21
+ };
9
22
  const resource = appendContextual(alias, {
10
23
  get: async (id, field, opts) => {
11
24
  const record = await resource.load(id, field, opts);
@@ -20,14 +33,12 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
20
33
  field = field.field;
21
34
  }
22
35
  field = field ?? '_id';
23
- const criteria = '_id' === field ? new ObjectId(id) : id;
24
36
  if (opts?.ttl != null) {
25
37
  throw new UnsupportedArgumentError('ttl');
26
38
  }
27
- const record = await resource.collection.findOne({ [field]: criteria });
39
+ const record = await resource.collection.findOne(identityCriteria(field, id, refs()));
28
40
  if (record != null) {
29
- record.id = record._id instanceof ObjectId ? record._id.toString() : record._id;
30
- delete record._id;
41
+ demarshal(record);
31
42
  }
32
43
  return record;
33
44
  },
@@ -47,12 +58,11 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
47
58
  throw new MisshapedRecord('id');
48
59
  }
49
60
  const original = await resource.get(id, field);
50
- const criteria = '_id' === field ? new ObjectId(id) : id;
51
61
  const replace = { ...record, _id: new ObjectId(original.id) };
52
62
  if (replace.id != null) {
53
63
  delete replace.id;
54
64
  }
55
- const result = await resource.collection.replaceOne({ [field]: criteria }, _prepareValues(replace, resource.schema));
65
+ const result = await resource.collection.replaceOne(identityCriteria(field, id, refs()), _prepareValues(replace, resource.schema, refs()));
56
66
  if (!result.acknowledged) {
57
67
  throw new RecordUpdateFailed(`${field}:${id}`);
58
68
  }
@@ -90,7 +100,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
90
100
  }
91
101
  const result = await resource.collection.insertOne({
92
102
  ...resource.getDefaults(),
93
- ..._prepareValues(record, resource.schema)
103
+ ..._prepareValues(record, resource.schema, refs())
94
104
  });
95
105
  if (!result.acknowledged) {
96
106
  throw new RecordUpdateFailed(`creation`);
@@ -124,8 +134,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
124
134
  if (id == null) {
125
135
  throw new MisshapedRecord('id');
126
136
  }
127
- const criteria = '_id' === field ? new ObjectId(_id) : _id;
128
- const result = await resource.collection.deleteOne({ [field]: criteria });
137
+ const result = await resource.collection.deleteOne(identityCriteria(field, _id, refs()));
129
138
  if (!result.acknowledged || result.deletedCount === 0) {
130
139
  return null;
131
140
  }
@@ -140,7 +149,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
140
149
  },
141
150
  list: async (criteria, opts) => {
142
151
  const options = prepareListOptions(DEFAULT_PAGE_SIZE, criteria, opts);
143
- criteria = options.criteria;
152
+ criteria = marshalCriteria(options.criteria, refs()) ?? {};
144
153
  const pager = options.pager ?? {};
145
154
  const size = pager?.size ?? DEFAULT_PAGE_SIZE;
146
155
  const total = await resource.collection.countDocuments(criteria);
@@ -158,12 +167,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
158
167
  }
159
168
  const items = await cursor.toArray();
160
169
  return {
161
- pager, items: items.map(item => {
162
- const _item = { ...item };
163
- _item.id = item._id.toString();
164
- delete _item._id;
165
- return _item;
166
- })
170
+ pager, items: items.map(item => demarshal({ ...item }))
167
171
  };
168
172
  },
169
173
  lock: async (record, fields) => {
@@ -200,7 +204,30 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
200
204
  resource.indexes = resource.indexes ?? [];
201
205
  resource.indexes.push({ name, index, options });
202
206
  return resource;
203
- }
207
+ },
208
+ /**
209
+ * `migration` and `reference` are `this`-returning in the interface, which an object
210
+ * literal can't express — hence the member level casts: the implementations return
211
+ * the closed over `resource`, which is that very object.
212
+ */
213
+ migration: ((name, apply, stage) => {
214
+ getDeclaration(alias).migrations.register(name, apply, stage);
215
+ return resource;
216
+ }),
217
+ migrations: () => getDeclaration(alias).migrations,
218
+ reference: ((field, opts) => {
219
+ const declaration = getDeclaration(alias);
220
+ const options = typeof opts === 'string' ? { resource: opts } : opts ?? {};
221
+ declaration.references.set(field, { field, resource: options.resource, noIndex: options.noIndex });
222
+ /**
223
+ * The system migration that converts the field's pre-existing string ids. Registered
224
+ * here rather than at init so it precedes migrations the app declares after its
225
+ * `reference()` calls — the field's type contract is the foundation those build on.
226
+ */
227
+ declaration.migrations.register(refMigrationName(field), makeRefMigration(field), MigrationStage.Pre);
228
+ return resource;
229
+ }),
230
+ references: () => [...getDeclaration(alias).references.values()]
204
231
  });
205
232
  // Explicit collection name override (decoupled from the registration alias, which may
206
233
  // contain characters that aren't valid in a collection name). Survives reinitializeContext
@@ -214,7 +241,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
214
241
  await mongo.ready();
215
242
  const db = await mongo.db(dbAlias);
216
243
  const config = mongo.config(dbAlias);
217
- resource.collection = await initializeCollection(db, config, resource);
244
+ resource.collection = await initializeCollection(db, config, resource, context);
218
245
  };
219
246
  resource.reinitializeContext = (context) => {
220
247
  const resource = (makeCustomResource?.(dbAlias, serviceAlias)
@@ -224,15 +251,23 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
224
251
  };
225
252
  return resource;
226
253
  };
227
- const _prepareValues = (obj, schema) => {
254
+ const _prepareValues = (obj, schema, refs) => {
255
+ /**
256
+ * Declared references convert independently of the schema — the schema is optional,
257
+ * and where it exists it declares these fields as strings, whose coercion below would
258
+ * undo the conversion.
259
+ */
260
+ if (refs != null && refs.size > 0) {
261
+ obj = Object.fromEntries(Object.entries(obj).map(([key, value]) => refs.has(key) ? [key, marshalReference(key, value)] : [key, value]));
262
+ }
228
263
  // @TODO Validate keys from additional properties in the root
229
264
  return schema != null ? Object.fromEntries(Object.entries(obj).map(([key, value]) => {
230
- // @TODO What if we reference another table by object id in another field?
231
- // How to properly transform them?
232
- // What if _id isn't an Object Id?
233
- if (key === '_id') {
265
+ if (key === '_id' && !(value instanceof ObjectId)) {
234
266
  return [key, new ObjectId(value)];
235
267
  }
268
+ if (key === '_id' || refs?.has(key)) {
269
+ return [key, value];
270
+ }
236
271
  // A null/undefined value has nothing to coerce — pass it through for any declared
237
272
  // type. Without this guard the object-map and array branches below call
238
273
  // `Object.entries`/`.map` on `undefined` and throw (and `new Date(null)` would
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -1,7 +1,44 @@
1
- import type { Resource, ResourceRecord, ResourceDbService, DbLocker, ResourceLocker } from '@owlmeans/resource';
1
+ import type { Resource, ResourceRecord, ResourceDbService, DbLocker, ResourceLocker, MigratableResource } from '@owlmeans/resource';
2
2
  import type { Collection, CreateIndexesOptions, Db, IndexSpecification, MongoClient } from 'mongodb';
3
3
  import type { AnySchema } from 'ajv';
4
- export interface MongoResource<T extends ResourceRecord> extends Resource<T>, ResourceLocker<T> {
4
+ /**
5
+ * What a mongo migration is handed.
6
+ *
7
+ * Deliberately not a session or transaction: multi-document transactions require a replica
8
+ * set, and a standalone `mongod` — the usual development and CI target — rejects them
9
+ * outright. A migration therefore has to be written to tolerate being interrupted partway,
10
+ * which in practice means idempotent updates rather than read-then-write.
11
+ */
12
+ export interface MongoTx {
13
+ db: Db;
14
+ /** The owning resource's collection. */
15
+ collection: Collection;
16
+ /** Another registered mongo resource's collection; omit the alias for the owning one. */
17
+ use: (alias?: string) => Collection;
18
+ /** A collection *name*, for `$lookup.from` and other stages that take one rather than a handle. */
19
+ ref: (alias?: string) => string;
20
+ }
21
+ /**
22
+ * A declared ObjectId reference — a record field that stores another record's id.
23
+ *
24
+ * The resource converts the field between the string ids records carry and the `ObjectId`
25
+ * the collection stores, exactly the way it already does for `_id`: strings in records and
26
+ * criteria, `ObjectId` on the wire. Declaring a reference also gives the field a mongo
27
+ * level index and registers the system migration that converts pre-existing string values.
28
+ */
29
+ export interface MongoReference {
30
+ /** Top level record property holding the reference (a single id or an array of ids). */
31
+ field: string;
32
+ /** Alias of the referenced resource. Informational — conversion never resolves it. */
33
+ resource?: string;
34
+ /** Skip the automatic `{ [field]: 1 }` index. */
35
+ noIndex?: boolean;
36
+ }
37
+ export interface MongoRefOptions {
38
+ resource?: string;
39
+ noIndex?: boolean;
40
+ }
41
+ export interface MongoResource<T extends ResourceRecord> extends Resource<T>, ResourceLocker<T>, MigratableResource<MongoTx> {
5
42
  name?: string;
6
43
  schema?: AnySchema;
7
44
  indexes?: Array<{
@@ -13,6 +50,20 @@ export interface MongoResource<T extends ResourceRecord> extends Resource<T>, Re
13
50
  db: () => Promise<Db>;
14
51
  client: () => Promise<MongoClient>;
15
52
  index: <Type extends MongoResource<T>>(name: string, index: IndexSpecification, options?: CreateIndexesOptions) => Type;
53
+ /**
54
+ * Declare that a field stores another record's id.
55
+ *
56
+ * Chainable and idempotent like {@link MigratableResource.migration}, and stored the same
57
+ * way — per alias at module scope — because losing the declaration to a context rebuild
58
+ * would silently stop the string/ObjectId conversion for the field.
59
+ *
60
+ * Declare only fields whose values really are mongo ids (assigned from another record's
61
+ * `id`). Composite keys, external provider ids, DIDs and business slugs must stay
62
+ * strings — converting them corrupts the collection.
63
+ */
64
+ reference: (field: string, opts?: string | MongoRefOptions) => this;
65
+ /** The declared references of this alias. */
66
+ references: () => MongoReference[];
16
67
  getDefaults: () => Partial<T>;
17
68
  }
18
69
  export interface MongoDbService extends ResourceDbService<Db, MongoClient>, DbLocker<ResourceRecord> {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAA;IAC5F,UAAU,EAAE,UAAU,CAAA;IACtB,EAAE,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;IAClC,KAAK,EAAE,CAAC,IAAI,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACvH,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;CACnG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAC1F,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC;;;;;;;GAOG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,EAAE,CAAA;IACN,wCAAwC;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,yFAAyF;IACzF,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;IACnC,mGAAmG;IACnG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC;IAC1H,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAA;IAC5F,UAAU,EAAE,UAAU,CAAA;IACtB,EAAE,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;IAClC,KAAK,EAAE,CAAC,IAAI,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACvH;;;;;;;;;;OAUG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,KAAK,IAAI,CAAA;IACnE,6CAA6C;IAC7C,UAAU,EAAE,MAAM,cAAc,EAAE,CAAA;IAClC,WAAW,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC;CACnG"}
@@ -2,4 +2,6 @@ export * from './indexes.js';
2
2
  export * from './schema.js';
3
3
  export * from './name.js';
4
4
  export * from './life-cycle.js';
5
+ export * from './migrations.js';
6
+ export * from './refs.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
@@ -2,4 +2,6 @@ export * from './indexes.js';
2
2
  export * from './schema.js';
3
3
  export * from './name.js';
4
4
  export * from './life-cycle.js';
5
+ export * from './migrations.js';
6
+ export * from './refs.js';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA"}
@@ -1,7 +1,31 @@
1
1
  import type { DbConfig, ResourceRecord } from '@owlmeans/resource';
2
+ import type { BasicContext } from '@owlmeans/context';
2
3
  import type { MongoResource } from '../types.js';
3
4
  import type { Db, Collection } from 'mongodb';
4
- export declare const initializeCollection: (db: Db, config: DbConfig, resource: MongoResource<ResourceRecord>) => Promise<Collection>;
5
+ /**
6
+ * Bring a resource's collection to the shape its schema declares.
7
+ *
8
+ * Order is deliberate, and matches the Postgres counterpart:
9
+ *
10
+ * 1. probe for the collection
11
+ * 2. absent → *baseline* every registered migration; present → run the `pre` ones
12
+ * (including the system `$ref:` migrations that convert declared references)
13
+ * 3. create the collection, or update its validator and indexes
14
+ * 4. present → run the `post` migrations
15
+ * 5. reconcile declared references — the second half of their double check: the ledger
16
+ * said whether the `$ref:` migration ran, this probes the collection itself and
17
+ * converts whatever strings still slipped through
18
+ *
19
+ * Step 2 is what stops the two mechanisms colliding. A `pre` migration runs before the
20
+ * validator is tightened, so it can reshape documents the new validator would reject. On a
21
+ * collection this call just created there is nothing to reshape — replaying a historical
22
+ * migration against a collection born in its final shape would at best scan for nothing —
23
+ * so the migrations are recorded as satisfied instead of run.
24
+ *
25
+ * `context` is optional so the existing three-argument call keeps working; without it a
26
+ * migration's `use`/`ref` can only address the owning resource.
27
+ */
28
+ export declare const initializeCollection: (db: Db, config: DbConfig, resource: MongoResource<ResourceRecord>, context?: BasicContext<any>) => Promise<Collection>;
5
29
  export declare const createCollection: (db: Db, name: string, resource: MongoResource<ResourceRecord>) => Promise<Collection>;
6
30
  export declare const updateCollection: (db: Db, name: string, resource: MongoResource<ResourceRecord>) => Promise<Collection>;
7
31
  //# sourceMappingURL=life-cycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,EAAE,UAAU,EAAY,MAAM,SAAS,CAAA;AAKvD,eAAO,MAAM,oBAAoB,GAC/B,IAAI,EAAE,EAAE,QAAQ,QAAQ,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,KAChE,OAAO,CAAC,UAAU,CAYpB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,IAAI,EAAE,EAAE,MAAM,MAAM,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAkBxH,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,IAAI,EAAE,EAAE,MAAM,MAAM,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAWxH,CAAA"}
1
+ {"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,EAAE,EAAE,UAAU,EAAgC,MAAM,SAAS,CAAA;AAS3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,GAC/B,IAAI,EAAE,EAAE,QAAQ,QAAQ,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,EACjE,UAAU,YAAY,CAAC,GAAG,CAAC,KAC1B,OAAO,CAAC,UAAU,CAmBpB,CAAA;AA+DD,eAAO,MAAM,gBAAgB,GAAU,IAAI,EAAE,EAAE,MAAM,MAAM,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAoBxH,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,IAAI,EAAE,EAAE,MAAM,MAAM,EAAE,UAAU,aAAa,CAAC,cAAc,CAAC,KAAG,OAAO,CAAC,UAAU,CAaxH,CAAA"}
@@ -1,23 +1,101 @@
1
+ import { MigrationStage, runMigrations } from '@owlmeans/resource';
2
+ import { DEF_MIGRATIONS_COLLECTION } from '../consts.js';
3
+ import { getDeclaration } from '../declarations.js';
1
4
  import { mongoCollectionName } from './name.js';
2
- import { schemaToMongoSchema } from './schema.js';
5
+ import { applyReferenceTypes, schemaToMongoSchema } from './schema.js';
3
6
  import { updateIndexes } from './indexes.js';
4
- export const initializeCollection = async (db, config, resource) => {
5
- let _collection;
7
+ import { makeMongoMigrationStore, makeMongoTx } from './migrations.js';
8
+ import { reconcileReferences } from './refs.js';
9
+ /**
10
+ * Bring a resource's collection to the shape its schema declares.
11
+ *
12
+ * Order is deliberate, and matches the Postgres counterpart:
13
+ *
14
+ * 1. probe for the collection
15
+ * 2. absent → *baseline* every registered migration; present → run the `pre` ones
16
+ * (including the system `$ref:` migrations that convert declared references)
17
+ * 3. create the collection, or update its validator and indexes
18
+ * 4. present → run the `post` migrations
19
+ * 5. reconcile declared references — the second half of their double check: the ledger
20
+ * said whether the `$ref:` migration ran, this probes the collection itself and
21
+ * converts whatever strings still slipped through
22
+ *
23
+ * Step 2 is what stops the two mechanisms colliding. A `pre` migration runs before the
24
+ * validator is tightened, so it can reshape documents the new validator would reject. On a
25
+ * collection this call just created there is nothing to reshape — replaying a historical
26
+ * migration against a collection born in its final shape would at best scan for nothing —
27
+ * so the migrations are recorded as satisfied instead of run.
28
+ *
29
+ * `context` is optional so the existing three-argument call keeps working; without it a
30
+ * migration's `use`/`ref` can only address the owning resource.
31
+ */
32
+ export const initializeCollection = async (db, config, resource, context) => {
6
33
  const name = mongoCollectionName(config, resource);
7
- const cursor = db.listCollections({ name });
8
- if (!await cursor.hasNext()) {
9
- _collection = await createCollection(db, name, resource);
34
+ const fresh = !await db.listCollections({ name }).hasNext();
35
+ appendReferenceIndexes(resource);
36
+ const migrate = prepareMigrations(db, config, resource, name, context);
37
+ await migrate(fresh ? { baseline: true } : { stage: MigrationStage.Pre });
38
+ const collection = fresh
39
+ ? await createCollection(db, name, resource)
40
+ : await updateCollection(db, name, resource);
41
+ if (!fresh) {
42
+ await migrate({ stage: MigrationStage.Post });
43
+ await reconcileReferences(collection, referencesOf(resource), resource.alias);
10
44
  }
11
- else {
12
- _collection = await updateCollection(db, name, resource);
45
+ return collection;
46
+ };
47
+ /** Tolerates hand-built resource objects that predate the reference capability. */
48
+ const referencesOf = (resource) => resource.references?.() ?? [];
49
+ /**
50
+ * A declared reference is indexed at the mongo level — that's part of its contract. The
51
+ * index is appended unless the resource already declares one with the same key pattern
52
+ * (mongo refuses two indexes over identical keys, and the existing one — possibly
53
+ * unique — wins).
54
+ */
55
+ const appendReferenceIndexes = (resource) => {
56
+ for (const ref of referencesOf(resource)) {
57
+ if (ref.noIndex === true) {
58
+ continue;
59
+ }
60
+ resource.indexes = resource.indexes ?? [];
61
+ const spec = JSON.stringify({ [ref.field]: 1 });
62
+ const present = resource.indexes.some(index => JSON.stringify(index.index) === spec || index.name === `ref_${ref.field}`);
63
+ if (!present) {
64
+ resource.indexes.push({ name: `ref_${ref.field}`, index: { [ref.field]: 1 } });
65
+ }
13
66
  }
14
- return _collection;
67
+ };
68
+ /**
69
+ * Bind the migration runner to this resource's database, or hand back a no-op when nothing
70
+ * is registered — the overwhelmingly common case, and one that shouldn't pay for a ledger.
71
+ */
72
+ const prepareMigrations = (db, config, resource, name, context) => {
73
+ const registry = getDeclaration(resource.alias).migrations;
74
+ if (registry.list().length < 1) {
75
+ return async () => null;
76
+ }
77
+ const ledgerName = config.meta?.migrationsCollection
78
+ ?? DEF_MIGRATIONS_COLLECTION;
79
+ /**
80
+ * `db.collection()` never round-trips, so taking the handle before the collection exists
81
+ * is safe — and on the fresh path the transaction is only ever baselined, never used.
82
+ */
83
+ const tx = makeMongoTx(db, db.collection(name), config, context, resource.alias);
84
+ const store = makeMongoMigrationStore(db, tx, ledgerName);
85
+ return async (opts) => {
86
+ const report = await runMigrations(resource.alias, registry, store, opts);
87
+ if (report.applied.length > 0) {
88
+ console.log(`@owlmeans/mongo-resource: ${name} applied ${report.stage} migrations —`
89
+ + ` ${report.applied.join(', ')}`);
90
+ }
91
+ return report;
92
+ };
15
93
  };
16
94
  export const createCollection = async (db, name, resource) => {
17
95
  const collection = await db.createCollection(name, {
18
96
  ...(resource.schema != null ? {
19
97
  validator: {
20
- $jsonSchema: patchJsonSchema(schemaToMongoSchema(resource.schema))
98
+ $jsonSchema: patchJsonSchema(applyReferenceTypes(schemaToMongoSchema(resource.schema), resource.schema, resource.references()))
21
99
  }
22
100
  } : {})
23
101
  });
@@ -30,7 +108,7 @@ export const createCollection = async (db, name, resource) => {
30
108
  };
31
109
  export const updateCollection = async (db, name, resource) => {
32
110
  if (resource.schema != null) {
33
- const $jsonSchema = patchJsonSchema(schemaToMongoSchema(resource.schema));
111
+ const $jsonSchema = patchJsonSchema(applyReferenceTypes(schemaToMongoSchema(resource.schema), resource.schema, resource.references()));
34
112
  await db.command({ collMod: name, validator: { $jsonSchema } });
35
113
  }
36
114
  const collection = db.collection(name);
@@ -1 +1 @@
1
- {"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"life-cycle.js","sourceRoot":"","sources":["../../src/utils/life-cycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { BasicContext } from '@owlmeans/context';
2
+ import type { DbConfig, MigrationStore } from '@owlmeans/resource';
3
+ import type { Collection, Db } from 'mongodb';
4
+ import type { MongoTx } from '../types.js';
5
+ /**
6
+ * A transaction façade over the database. Alias resolution is injected so migrations can
7
+ * address other resources without importing the context.
8
+ *
9
+ * Names are resolved through {@link mongoCollectionName}, not through the other resource's
10
+ * live `collection` handle, because at migration time that resource may not have
11
+ * initialized yet — registration order is not dependency order. The name is a pure
12
+ * function of the config and the alias, so it's knowable either way.
13
+ */
14
+ export declare const makeMongoTx: (db: Db, collection: Collection, config: DbConfig, context: BasicContext<any>, self: string) => MongoTx;
15
+ /**
16
+ * Migration ledger, one collection per database.
17
+ *
18
+ * Where the Postgres store commits the ledger row inside the migration's own transaction,
19
+ * this one can't — see {@link MongoTx}. It uses claim-then-complete instead: the unique
20
+ * index on `(alias, name)` is the mutual exclusion primitive, so a replica that loses the
21
+ * race to insert waits for the winner rather than running the same migration twice.
22
+ */
23
+ export declare const makeMongoMigrationStore: (db: Db, tx: MongoTx, name?: string) => MigrationStore<MongoTx>;
24
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/utils/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAA6B,cAAc,EAAkB,MAAM,oBAAoB,CAAA;AAC7G,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAK7C,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAA;AAkBzD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GACtB,IAAI,EAAE,EAAE,YAAY,UAAU,EAAE,QAAQ,QAAQ,EAAE,SAAS,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,KACzF,OAeF,CAAA;AAqBD;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAClC,IAAI,EAAE,EAAE,IAAI,OAAO,EAAE,OAAM,MAAkC,KAC5D,cAAc,CAAC,OAAO,CAwFxB,CAAA"}