@owlmeans/mongo-resource 0.1.18-rc.2 → 0.1.18-rc.21

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 (47) hide show
  1. package/README.md +232 -71
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/mongo-resource/SKILL.md +80 -30
  4. package/build/consts.d.ts +8 -4
  5. package/build/consts.d.ts.map +1 -1
  6. package/build/consts.js +8 -4
  7. package/build/consts.js.map +1 -1
  8. package/build/declarations.d.ts.map +1 -1
  9. package/build/declarations.js +5 -6
  10. package/build/declarations.js.map +1 -1
  11. package/build/index.d.ts +1 -0
  12. package/build/index.d.ts.map +1 -1
  13. package/build/index.js +1 -0
  14. package/build/index.js.map +1 -1
  15. package/build/resource.d.ts +2 -2
  16. package/build/resource.d.ts.map +1 -1
  17. package/build/resource.js +91 -118
  18. package/build/resource.js.map +1 -1
  19. package/build/types.d.ts +16 -5
  20. package/build/types.d.ts.map +1 -1
  21. package/build/utils/criteria.d.ts +24 -0
  22. package/build/utils/criteria.d.ts.map +1 -0
  23. package/build/utils/criteria.js +221 -0
  24. package/build/utils/criteria.js.map +1 -0
  25. package/build/utils/index.d.ts +1 -0
  26. package/build/utils/index.d.ts.map +1 -1
  27. package/build/utils/index.js +1 -0
  28. package/build/utils/index.js.map +1 -1
  29. package/build/utils/migrations.d.ts.map +1 -1
  30. package/build/utils/migrations.js +16 -1
  31. package/build/utils/migrations.js.map +1 -1
  32. package/build/utils/refs.d.ts +5 -3
  33. package/build/utils/refs.d.ts.map +1 -1
  34. package/build/utils/refs.js +4 -1
  35. package/build/utils/refs.js.map +1 -1
  36. package/package.json +6 -6
  37. package/src/consts.ts +8 -4
  38. package/src/declarations.ts +5 -6
  39. package/src/index.ts +1 -0
  40. package/src/resource.ts +115 -144
  41. package/src/types.ts +17 -5
  42. package/src/utils/criteria.ts +248 -0
  43. package/src/utils/index.ts +1 -0
  44. package/src/utils/migrations.ts +17 -2
  45. package/src/utils/refs.ts +8 -6
  46. package/tests/criteria.spec.ts +114 -0
  47. package/build/.gitkeep +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACtC,2FAA2F;IAC3F,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACxC;AAcD,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,gBAQ9C,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,IAOlD,CAAA"}
1
+ {"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACtC,2FAA2F;IAC3F,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CACxC;AAaD,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,gBAQ9C,CAAA;AAED,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,IAOlD,CAAA"}
@@ -2,12 +2,11 @@ import { createMigrationRegistry } from '@owlmeans/resource';
2
2
  /**
3
3
  * Per-alias migration store, held at module scope rather than on the resource object.
4
4
  *
5
- * `reinitializeContext` rebuilds every resource from the maker, which drops anything a
6
- * caller attached by chaining afterwards. For indexes that is survivable — they already
7
- * exist in the database and `updateIndexes` only ever adds. Migrations are not: a layer
8
- * switch points the resource at a *different* database, and a registry emptied by the
9
- * rebuild would mean the entity database silently never gets the transformation. Keying
10
- * by alias makes the declarations outlive any number of context switches.
5
+ * A maker may run more than once for the same alias — a custom maker wrapping the built-in
6
+ * one, a maker called again by an app or a spec. Keying the declarations by alias makes
7
+ * that a no-op: every run reads and extends the same registry, so nothing a caller declared
8
+ * by chaining onto an earlier resource object is lost. Losing a migration is silent — the
9
+ * data transformation simply never runs — which is why the store cannot live on the object.
11
10
  */
12
11
  const declarations = new Map();
13
12
  export const getDeclaration = (alias) => {
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAW5D;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAkC,IAAI,GAAG,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAoB,EAAE;IAChE,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,WAAW,GAAG,EAAE,UAAU,EAAE,uBAAuB,EAAW,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;QACvF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAM;IACR,CAAC;IACD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA"}
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../src/declarations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAW5D;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAkC,IAAI,GAAG,EAAE,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAoB,EAAE;IAChE,IAAI,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,WAAW,GAAG,EAAE,UAAU,EAAE,uBAAuB,EAAW,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;QACvF,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAQ,EAAE;IACxD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,YAAY,CAAC,KAAK,EAAE,CAAA;QAEpB,OAAM;IACR,CAAC;IACD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA"}
package/build/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from './consts.js';
3
3
  export * from './declarations.js';
4
4
  export * from './utils/migrations.js';
5
5
  export * from './utils/refs.js';
6
+ export * from './utils/criteria.js';
6
7
  export * from './resource.js';
7
8
  export * from './helper.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
package/build/index.js CHANGED
@@ -2,6 +2,7 @@ export * from './consts.js';
2
2
  export * from './declarations.js';
3
3
  export * from './utils/migrations.js';
4
4
  export * from './utils/refs.js';
5
+ export * from './utils/criteria.js';
5
6
  export * from './resource.js';
6
7
  export * from './helper.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { ResourceMaker, ResourceRecord } from '@owlmeans/resource';
1
+ import type { ResourceRecord } from '@owlmeans/resource';
2
2
  import type { MongoResource } from './types.js';
3
- export declare const makeMongoResource: <R extends ResourceRecord, T extends MongoResource<R> = MongoResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, makeCustomResource?: ResourceMaker<R, T>, collectionName?: string) => T;
3
+ export declare const makeMongoResource: <R extends ResourceRecord, T extends MongoResource<R> = MongoResource<R>>(alias: string, dbAlias?: string, serviceAlias?: string, collectionName?: string) => T;
4
4
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErF,OAAO,KAAK,EAAmD,aAAa,EAAW,MAAM,YAAY,CAAA;AAezG,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAEhE,MAAM,YAAW,MAAM,iBAAmC,MAAM,uBAClD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,MAAM,KAChE,CAuTF,CAAA"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACuC,cAAc,EAChE,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAmD,aAAa,EAAW,MAAM,YAAY,CAAA;AAkBzG,eAAO,MAAM,iBAAiB,GAC5B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,SAEhE,MAAM,YAAW,MAAM,iBAAmC,MAAM,mBACtD,MAAM,KACtB,CAsRF,CAAA"}
package/build/resource.js CHANGED
@@ -4,14 +4,16 @@ import { MigrationStage } from '@owlmeans/resource';
4
4
  import { initializeCollection } from './utils/life-cycle.js';
5
5
  import { getDeclaration } from './declarations.js';
6
6
  import { ObjectId } from 'mongodb';
7
- import { MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed, prepareListOptions } from '@owlmeans/resource';
7
+ import { MisshapedRecord, RecordExists, UnknownRecordError, UnsupportedArgumentError, RecordUpdateFailed } from '@owlmeans/resource';
8
8
  import { getSchemaSecureFeilds } from './helper.js';
9
- import { demarshalRefs, identityCriteria, makeRefMigration, marshalCriteria, marshalReference, refMigrationName } from './utils/refs.js';
10
- export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, makeCustomResource, collectionName) => {
9
+ import { criteriaToFilter, sortToMongo } from './utils/criteria.js';
10
+ import { demarshalRefs, identityCriteria, makeRefMigration, marshalReference, refMigrationName } from './utils/refs.js';
11
+ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlias = DEFAULT_DB_ALIAS, collectionName) => {
11
12
  const location = `mongo-resource:${alias}`;
12
13
  /**
13
14
  * Live view — references may be declared after the resource is built, and the
14
- * declarations are module scoped so they survive `reinitializeContext`.
15
+ * declarations live at module scope keyed by alias, so a second maker run for the
16
+ * same alias sees everything already declared for it.
15
17
  */
16
18
  const refs = () => getDeclaration(alias).references;
17
19
  const demarshal = (record) => {
@@ -19,63 +21,82 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
19
21
  delete record._id;
20
22
  return demarshalRefs(record, refs());
21
23
  };
24
+ /**
25
+ * A read addressed either way. An id is matched tolerantly: a string that is not a mongo id
26
+ * finds nothing, where handing it to `ObjectId` would raise a driver error at a call site
27
+ * that only asked whether the record exists.
28
+ */
29
+ const filterOf = (idOrWhere) => typeof idOrWhere === 'string'
30
+ ? identityCriteria('id', idOrWhere, refs())
31
+ : criteriaToFilter(idOrWhere, refs());
32
+ /**
33
+ * The single implementation both overloads of `load` and `get` stand on — an id and a
34
+ * criteria object differ only in how the filter is built.
35
+ */
36
+ const loadOne = async (idOrWhere, opts) => {
37
+ const sort = sortToMongo(opts?.sort);
38
+ const record = await resource.collection.findOne(filterOf(idOrWhere), sort != null ? { sort } : {});
39
+ return record != null ? demarshal(record) : null;
40
+ };
22
41
  const resource = appendContextual(alias, {
23
- get: async (id, field, opts) => {
24
- const record = await resource.load(id, field, opts);
42
+ get: (async (idOrWhere, opts) => {
43
+ const record = await loadOne(idOrWhere, opts);
25
44
  if (record == null) {
26
- throw new UnknownRecordError(id);
45
+ throw new UnknownRecordError(typeof idOrWhere === 'string' ? idOrWhere : JSON.stringify(idOrWhere));
27
46
  }
28
47
  return record;
29
- },
30
- load: async (id, field, opts) => {
31
- if (typeof field === 'object') {
32
- opts = field;
33
- field = field.field;
48
+ }),
49
+ load: loadOne,
50
+ list: async (where, opts) => {
51
+ const filter = criteriaToFilter(where, refs());
52
+ const total = await resource.collection.countDocuments(filter);
53
+ /** `size: 0` is the explicit ask for everything; an omitted size pages by default. */
54
+ const size = opts?.size ?? DEFAULT_PAGE_SIZE;
55
+ const page = opts?.page ?? 0;
56
+ if (size < 1 && page !== 0) {
57
+ /** Nothing to page through — answering page 0 instead would be a silent wrong answer. */
58
+ throw new UnsupportedArgumentError('page-without-size');
34
59
  }
35
- field = field ?? '_id';
36
- if (opts?.ttl != null) {
37
- throw new UnsupportedArgumentError('ttl');
60
+ if (total === 0) {
61
+ return size > 0 ? { items: [], total, page, size } : { items: [], total };
38
62
  }
39
- const record = await resource.collection.findOne(identityCriteria(field, id, refs()));
40
- if (record != null) {
41
- demarshal(record);
63
+ let cursor = resource.collection.find(filter);
64
+ const sort = sortToMongo(opts?.sort);
65
+ if (sort != null) {
66
+ cursor = cursor.sort(sort);
42
67
  }
43
- return record;
68
+ if (size > 0) {
69
+ cursor = cursor.skip(page * size).limit(size);
70
+ }
71
+ const items = (await cursor.toArray()).map(item => demarshal({ ...item }));
72
+ return size > 0 ? { items, total, page, size } : { items, total };
44
73
  },
74
+ count: async (where) => await resource.collection.countDocuments(criteriaToFilter(where, refs())),
45
75
  update: async (record, opts) => {
46
- let field = '_id';
47
- if (typeof opts === 'string') {
48
- field = opts;
49
- }
50
- else if (typeof opts === 'object') {
51
- field = opts.field ?? field;
52
- }
53
- if (field !== '_id' && record[field] == null) {
54
- throw new MisshapedRecord('no-field-value');
76
+ if (opts?.ttl != null) {
77
+ throw new UnsupportedArgumentError('ttl');
55
78
  }
56
- const id = field == '_id' ? record.id : record[field];
79
+ const id = record.id;
57
80
  if (id == null) {
58
81
  throw new MisshapedRecord('id');
59
82
  }
60
- const original = await resource.get(id, field);
61
- const replace = { ...record, _id: new ObjectId(original.id) };
62
- if (replace.id != null) {
63
- delete replace.id;
64
- }
65
- const result = await resource.collection.replaceOne(identityCriteria(field, id, refs()), _prepareValues(replace, resource.schema, refs()));
83
+ /** Absence is an error, not a silent no-op — `replaceOne` would just match nothing. */
84
+ const original = await resource.get(id);
85
+ const replace = { ...record };
86
+ /**
87
+ * Documents never store `id`, and a replacement that omits `_id` keeps the one the
88
+ * document already carries — so the whole record is replaced without touching its key.
89
+ */
90
+ delete replace.id;
91
+ const result = await resource.collection.replaceOne(identityCriteria('id', original.id, refs()), _prepareValues(replace, resource.schema, refs()));
66
92
  if (!result.acknowledged) {
67
- throw new RecordUpdateFailed(`${field}:${id}`);
68
- }
69
- return resource.get(id, opts);
70
- },
71
- save: async (record, opts) => {
72
- const id = record.id;
73
- if (id != null || (typeof opts === 'string' && record[opts] != null) || (typeof opts === 'object' && ("field" in opts)
74
- && record[opts.field] != null)) {
75
- return resource.update(record, opts);
93
+ throw new RecordUpdateFailed(`id:${id}`);
76
94
  }
77
- return resource.create(record, typeof opts !== 'string' ? opts : undefined);
95
+ return await resource.get(original.id);
78
96
  },
97
+ save: async (record, opts) => record.id != null
98
+ ? await resource.update(record, opts)
99
+ : await resource.create(record, opts),
79
100
  getDefaults: () => {
80
101
  const schema = resource.schema;
81
102
  if (schema == null) {
@@ -95,7 +116,7 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
95
116
  if (record.id != null) {
96
117
  throw new RecordExists('id-present');
97
118
  }
98
- if (opts != null && opts.ttl != null) {
119
+ if (opts?.ttl != null) {
99
120
  throw new UnsupportedArgumentError('ttl');
100
121
  }
101
122
  const result = await resource.collection.insertOne({
@@ -105,70 +126,27 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
105
126
  if (!result.acknowledged) {
106
127
  throw new RecordUpdateFailed(`creation`);
107
128
  }
108
- const id = result.insertedId;
109
- return resource.get(id.toString());
129
+ return await resource.get(result.insertedId.toString());
110
130
  },
111
- delete: async (id, opts) => {
112
- let record = null;
113
- if (typeof id === 'object') {
114
- if (id.id == null) {
115
- throw new MisshapedRecord('id');
116
- }
117
- record = await resource.load(id.id);
118
- }
119
- else {
120
- record = await resource.load(id, opts);
121
- }
122
- if (record == null) {
123
- return null;
124
- }
125
- let field = '_id';
126
- if (typeof opts === 'string') {
127
- field = opts;
128
- opts = undefined;
129
- }
130
- else if (typeof opts === 'object') {
131
- field = opts.field ?? field;
132
- }
133
- const _id = field == '_id' ? record.id : record[field];
134
- if (id == null) {
135
- throw new MisshapedRecord('id');
136
- }
137
- const result = await resource.collection.deleteOne(identityCriteria(field, _id, refs()));
138
- if (!result.acknowledged || result.deletedCount === 0) {
139
- return null;
140
- }
141
- return record;
131
+ /** Atomic: the record is handed back by the very operation that removed it. */
132
+ delete: async (id) => {
133
+ const record = await resource.collection.findOneAndDelete(identityCriteria('id', id, refs()));
134
+ return record != null ? demarshal(record) : null;
142
135
  },
143
- pick: async (id, opts) => {
144
- const record = await resource.delete(id, opts);
136
+ take: async (id) => {
137
+ const record = await resource.delete(id);
145
138
  if (record == null) {
146
- throw new UnknownRecordError(typeof id == 'string' ? id : (id.id ?? 'unknown'));
139
+ throw new UnknownRecordError(id);
147
140
  }
148
141
  return record;
149
142
  },
150
- list: async (criteria, opts) => {
151
- const options = prepareListOptions(DEFAULT_PAGE_SIZE, criteria, opts);
152
- criteria = marshalCriteria(options.criteria, refs()) ?? {};
153
- const pager = options.pager ?? {};
154
- const size = pager?.size ?? DEFAULT_PAGE_SIZE;
155
- const total = await resource.collection.countDocuments(criteria);
156
- pager.total = total;
157
- const skip = (pager.page ?? 0) * size;
158
- if (total === 0 && skip >= total) {
159
- return { items: [], pager };
143
+ purge: async (where) => {
144
+ const filter = criteriaToFilter(where, refs());
145
+ if (Object.keys(filter).length < 1) {
146
+ /** An empty filter here would empty the collection. */
147
+ throw new UnsupportedArgumentError('purge:no-criteria');
160
148
  }
161
- let cursor = resource.collection.find(criteria)
162
- .skip(skip).limit(size);
163
- if (pager.sort != null) {
164
- cursor = cursor.sort(typeof pager.sort === 'string'
165
- ? pager.sort
166
- : pager.sort.reduce((sort, [field, order]) => ({ ...sort, [field]: order ? -1 : 1 }), {}));
167
- }
168
- const items = await cursor.toArray();
169
- return {
170
- pager, items: items.map(item => demarshal({ ...item }))
171
- };
149
+ return (await resource.collection.deleteMany(filter)).deletedCount;
172
150
  },
173
151
  lock: async (record, fields) => {
174
152
  fields ??= getSchemaSecureFeilds(resource.schema ?? {});
@@ -200,16 +178,16 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
200
178
  await mongo.ready();
201
179
  return await mongo.client(dbAlias);
202
180
  },
203
- index: (name, index, options) => {
181
+ /**
182
+ * `index`, `migration` and `reference` hand the resource itself back so declarations
183
+ * chain — a return an object literal can't express, hence the member level casts: each
184
+ * implementation returns the closed over `resource`, which is that very object.
185
+ */
186
+ index: ((name, index, options) => {
204
187
  resource.indexes = resource.indexes ?? [];
205
188
  resource.indexes.push({ name, index, options });
206
189
  return resource;
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
- */
190
+ }),
213
191
  migration: ((name, apply, stage) => {
214
192
  getDeclaration(alias).migrations.register(name, apply, stage);
215
193
  return resource;
@@ -230,11 +208,12 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
230
208
  references: () => [...getDeclaration(alias).references.values()]
231
209
  });
232
210
  // Explicit collection name override (decoupled from the registration alias, which may
233
- // contain characters that aren't valid in a collection name). Survives reinitializeContext
234
- // because it's threaded back into the recursive makeMongoResource call below.
211
+ // contain characters that aren't valid in a collection name).
235
212
  if (collectionName != null) {
236
213
  resource.name = collectionName;
237
214
  }
215
+ resource.dbAlias = dbAlias;
216
+ resource.serviceAlias = serviceAlias;
238
217
  resource.init = async () => {
239
218
  const context = assertContext(resource.ctx, location);
240
219
  const mongo = context.service(serviceAlias ?? dbAlias);
@@ -243,12 +222,6 @@ export const makeMongoResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceAlia
243
222
  const config = mongo.config(dbAlias);
244
223
  resource.collection = await initializeCollection(db, config, resource, context);
245
224
  };
246
- resource.reinitializeContext = (context) => {
247
- const resource = (makeCustomResource?.(dbAlias, serviceAlias)
248
- ?? makeMongoResource(alias, dbAlias, serviceAlias, makeCustomResource, collectionName));
249
- resource.ctx = context;
250
- return resource;
251
- };
252
225
  return resource;
253
226
  };
254
227
  const _prepareValues = (obj, schema, refs) => {
@@ -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,4 +1,4 @@
1
- import type { Resource, ResourceRecord, ResourceDbService, DbLocker, ResourceLocker, MigratableResource } from '@owlmeans/resource';
1
+ import type { Resource, ResourceRecord, ResourceDbService, DbLocker, LockableResource, MigratableResource } from '@owlmeans/resource';
2
2
  import type { Collection, CreateIndexesOptions, Db, IndexSpecification, MongoClient } from 'mongodb';
3
3
  import type { AnySchema } from 'ajv';
4
4
  /**
@@ -38,8 +38,18 @@ export interface MongoRefOptions {
38
38
  resource?: string;
39
39
  noIndex?: boolean;
40
40
  }
41
- export interface MongoResource<T extends ResourceRecord> extends Resource<T>, ResourceLocker<T>, MigratableResource<MongoTx> {
41
+ export interface MongoResource<T extends ResourceRecord> extends Resource<T>, LockableResource<T>, MigratableResource<MongoTx, MongoResource<T>> {
42
42
  name?: string;
43
+ /**
44
+ * The db-config alias this resource was registered against.
45
+ *
46
+ * Exposed because a collection's NAME depends on it: two resources in one database can carry
47
+ * different `resourcePrefix`es, so anything naming a collection on another resource's behalf —
48
+ * a migration reaching across aliases, for one — has to read that resource's own config rather
49
+ * than assume its caller's.
50
+ */
51
+ dbAlias?: string;
52
+ serviceAlias?: string;
43
53
  schema?: AnySchema;
44
54
  indexes?: Array<{
45
55
  name: string;
@@ -49,13 +59,14 @@ export interface MongoResource<T extends ResourceRecord> extends Resource<T>, Re
49
59
  collection: Collection;
50
60
  db: () => Promise<Db>;
51
61
  client: () => Promise<MongoClient>;
52
- index: <Type extends MongoResource<T>>(name: string, index: IndexSpecification, options?: CreateIndexesOptions) => Type;
62
+ index: (name: string, index: IndexSpecification, options?: CreateIndexesOptions) => this;
53
63
  /**
54
64
  * Declare that a field stores another record's id.
55
65
  *
56
66
  * 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.
67
+ * way — per alias at module scope — so a maker that runs more than once for the same alias
68
+ * re-declares the same entry rather than losing it. A lost declaration would silently stop
69
+ * the string/ObjectId conversion for the field.
59
70
  *
60
71
  * Declare only fields whose values really are mongo ids (assigned from another record's
61
72
  * `id`). Composite keys, external provider ids, DIDs and business slugs must stay
@@ -1 +1 @@
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"}
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,gBAAgB,EAAE,kBAAkB,EAC5F,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,gBAAgB,CAAC,CAAC,CAAC,EAC/F,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,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,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACxF;;;;;;;;;;;OAWG;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"}
@@ -0,0 +1,24 @@
1
+ import type { Criteria, Sort } from '@owlmeans/resource';
2
+ import type { Document } from 'mongodb';
3
+ import type { MongoReference } from '../types.js';
4
+ /**
5
+ * Translate `Criteria<T>` into the filter a collection takes.
6
+ *
7
+ * Two passes: the shared operator vocabulary becomes mongo expressions, then
8
+ * {@link marshalCriteria} converts the values addressed at `_id` or at a declared reference
9
+ * into `ObjectId`s and maps the `id` alias onto `_id`. Both halves are needed — a criteria
10
+ * object carries string ids and portable operators, a collection stores neither.
11
+ *
12
+ * An empty result is an empty filter, which matches everything. Callers that must not act on
13
+ * "everything" — `purge` — check for it themselves.
14
+ *
15
+ * @throws {UnsupportedArgumentError}
16
+ */
17
+ export declare const criteriaToFilter: (criteria: Criteria<any> | undefined, refs: Map<string, MongoReference>) => Document;
18
+ /**
19
+ * Translate `Sort<T>[]` into a mongo sort document. A bare field name is ascending, and `id`
20
+ * addresses `_id` — documents never store an `id` field, so sorting by the name records carry
21
+ * would silently order by nothing.
22
+ */
23
+ export declare const sortToMongo: (sort?: Sort<any>[]) => Document | undefined;
24
+ //# sourceMappingURL=criteria.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/utils/criteria.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAyMjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,aACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,QAAQ,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KACrE,QAOF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAAW,IAAI,CAAC,GAAG,CAAC,EAAE,KAAG,QAAQ,GAAG,SAa3D,CAAA"}