convex-ents 0.18.1 → 0.20.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/dist/deletion.js +2 -6
- package/dist/deletion.js.map +1 -1
- package/dist/functions.d.ts +1 -1
- package/dist/functions.js +182 -19
- package/dist/functions.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +184 -25
- package/dist/index.js.map +1 -1
- package/dist/shared.d.ts +9 -5
- package/dist/shared.js +17 -2
- package/dist/shared.js.map +1 -1
- package/dist/writer.d.ts +104 -5
- package/dist/writer.js +158 -17
- package/dist/writer.js.map +1 -1
- package/package.json +6 -4
package/dist/shared.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SystemDataModel, TableNamesInDataModel, FieldTypeFromFieldPath, DocumentByName } from 'convex/server';
|
|
1
|
+
import { SystemDataModel, TableNamesInDataModel, FieldTypeFromFieldPath, DocumentByName, GenericDataModel, GenericDatabaseReader, QueryInitializer, NamedTableInfo, SystemTableNames } from 'convex/server';
|
|
2
2
|
import { GenericEdgeConfig, GenericEntsDataModel, EdgeConfig } from './schema.js';
|
|
3
|
-
import 'convex/values';
|
|
3
|
+
import { GenericId } from 'convex/values';
|
|
4
4
|
|
|
5
5
|
type EntsSystemDataModel = {
|
|
6
6
|
[key in keyof SystemDataModel]: SystemDataModel[key] & {
|
|
@@ -8,10 +8,14 @@ type EntsSystemDataModel = {
|
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
type PromiseEdgeResult<EdgeConfig extends GenericEdgeConfig, MultipleRef, MultipleField, SingleOptional, Single> = EdgeConfig["cardinality"] extends "multiple" ? EdgeConfig["type"] extends "ref" ? MultipleRef : MultipleField : EdgeConfig["type"] extends "ref" ? SingleOptional : EdgeConfig["optional"] extends true ? SingleOptional : Single;
|
|
11
|
-
type IndexFieldTypesForEq<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>, T extends string[]> =
|
|
11
|
+
type IndexFieldTypesForEq<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>, T extends string[]> = PopIfSeveral<{
|
|
12
12
|
[K in keyof T]: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, T[K]>;
|
|
13
13
|
}>;
|
|
14
|
-
type
|
|
14
|
+
type PopIfSeveral<T extends any[]> = T extends [infer Only] ? [Only] : T extends [...infer Rest, infer _Last] ? Rest : never;
|
|
15
15
|
declare function getEdgeDefinitions<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(entDefinitions: EntsDataModel, table: Table): Record<keyof EntsDataModel[Table]["edges"], EdgeConfig>;
|
|
16
|
+
type UniqueIndexFieldName<T extends string[]> = T extends [infer Only] ? Only : T extends [infer Single, "_creationTime"] ? Single : never;
|
|
17
|
+
declare function systemAwareGet<DataModel extends GenericDataModel, Table extends TableNamesInDataModel<DataModel>>(db: GenericDatabaseReader<DataModel>, table: Table, id: GenericId<Table>): Promise<DocumentByName<SystemDataModel, (Table & "_scheduled_functions") | (Table & "_storage")> | null> | Promise<DocumentByName<DataModel, Table> | null>;
|
|
18
|
+
declare function systemAwareQuery<DataModel extends GenericDataModel, Table extends TableNamesInDataModel<DataModel>>(db: GenericDatabaseReader<DataModel>, table: Table): QueryInitializer<NamedTableInfo<DataModel, Table>>;
|
|
19
|
+
declare function isSystemTable(table: string): table is SystemTableNames;
|
|
16
20
|
|
|
17
|
-
export { type EntsSystemDataModel, type IndexFieldTypesForEq, type PromiseEdgeResult, getEdgeDefinitions };
|
|
21
|
+
export { type EntsSystemDataModel, type IndexFieldTypesForEq, type PromiseEdgeResult, type UniqueIndexFieldName, getEdgeDefinitions, isSystemTable, systemAwareGet, systemAwareQuery };
|
package/dist/shared.js
CHANGED
|
@@ -20,14 +20,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/shared.ts
|
|
21
21
|
var shared_exports = {};
|
|
22
22
|
__export(shared_exports, {
|
|
23
|
-
getEdgeDefinitions: () => getEdgeDefinitions
|
|
23
|
+
getEdgeDefinitions: () => getEdgeDefinitions,
|
|
24
|
+
isSystemTable: () => isSystemTable,
|
|
25
|
+
systemAwareGet: () => systemAwareGet,
|
|
26
|
+
systemAwareQuery: () => systemAwareQuery
|
|
24
27
|
});
|
|
25
28
|
module.exports = __toCommonJS(shared_exports);
|
|
26
29
|
function getEdgeDefinitions(entDefinitions, table) {
|
|
27
30
|
return entDefinitions[table].edges;
|
|
28
31
|
}
|
|
32
|
+
function systemAwareGet(db, table, id) {
|
|
33
|
+
return isSystemTable(table) ? db.system.get(table, id) : db.get(table, id);
|
|
34
|
+
}
|
|
35
|
+
function systemAwareQuery(db, table) {
|
|
36
|
+
return isSystemTable(table) ? db.system.query(table) : db.query(table);
|
|
37
|
+
}
|
|
38
|
+
function isSystemTable(table) {
|
|
39
|
+
return table.startsWith("_");
|
|
40
|
+
}
|
|
29
41
|
// Annotate the CommonJS export names for ESM import in node:
|
|
30
42
|
0 && (module.exports = {
|
|
31
|
-
getEdgeDefinitions
|
|
43
|
+
getEdgeDefinitions,
|
|
44
|
+
isSystemTable,
|
|
45
|
+
systemAwareGet,
|
|
46
|
+
systemAwareQuery
|
|
32
47
|
});
|
|
33
48
|
//# sourceMappingURL=shared.js.map
|
package/dist/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared.ts"],"sourcesContent":["import {\n DocumentByName,\n FieldTypeFromFieldPath,\n SystemDataModel,\n TableNamesInDataModel,\n} from \"convex/server\";\nimport { EdgeConfig, GenericEdgeConfig, GenericEntsDataModel } from \"./schema\";\n\nexport type EntsSystemDataModel = {\n [key in keyof SystemDataModel]: SystemDataModel[key] & {\n edges: Record<string, never>;\n };\n};\n\nexport type PromiseEdgeResult<\n EdgeConfig extends GenericEdgeConfig,\n MultipleRef,\n MultipleField,\n SingleOptional,\n Single,\n> = EdgeConfig[\"cardinality\"] extends \"multiple\"\n ? EdgeConfig[\"type\"] extends \"ref\"\n ? MultipleRef\n : MultipleField\n : EdgeConfig[\"type\"] extends \"ref\"\n ? SingleOptional\n : EdgeConfig[\"optional\"] extends true\n ? SingleOptional\n : Single;\n\nexport type IndexFieldTypesForEq<\n EntsDataModel extends GenericEntsDataModel,\n Table extends TableNamesInDataModel<EntsDataModel>,\n T extends string[],\n> =
|
|
1
|
+
{"version":3,"sources":["../src/shared.ts"],"sourcesContent":["import {\n DocumentByName,\n FieldTypeFromFieldPath,\n GenericDatabaseReader,\n GenericDataModel,\n NamedTableInfo,\n QueryInitializer,\n SystemDataModel,\n SystemTableNames,\n TableNamesInDataModel,\n} from \"convex/server\";\nimport { EdgeConfig, GenericEdgeConfig, GenericEntsDataModel } from \"./schema\";\nimport { GenericId } from \"convex/values\";\n\nexport type EntsSystemDataModel = {\n [key in keyof SystemDataModel]: SystemDataModel[key] & {\n edges: Record<string, never>;\n };\n};\n\nexport type PromiseEdgeResult<\n EdgeConfig extends GenericEdgeConfig,\n MultipleRef,\n MultipleField,\n SingleOptional,\n Single,\n> = EdgeConfig[\"cardinality\"] extends \"multiple\"\n ? EdgeConfig[\"type\"] extends \"ref\"\n ? MultipleRef\n : MultipleField\n : EdgeConfig[\"type\"] extends \"ref\"\n ? SingleOptional\n : EdgeConfig[\"optional\"] extends true\n ? SingleOptional\n : Single;\n\nexport type IndexFieldTypesForEq<\n EntsDataModel extends GenericEntsDataModel,\n Table extends TableNamesInDataModel<EntsDataModel>,\n T extends string[],\n> = PopIfSeveral<{\n [K in keyof T]: FieldTypeFromFieldPath<\n DocumentByName<EntsDataModel, Table>,\n T[K]\n >;\n}>;\n\n// System indexes have only a single field, so we won't to perform\n// equality check on that field. Normal indexes always have _creationTime as the last field.\ntype PopIfSeveral<T extends any[]> = T extends [infer Only]\n ? [Only]\n : T extends [...infer Rest, infer _Last]\n ? Rest\n : never;\n\nexport function getEdgeDefinitions<\n EntsDataModel extends GenericEntsDataModel,\n Table extends TableNamesInDataModel<EntsDataModel>,\n>(entDefinitions: EntsDataModel, table: Table) {\n return entDefinitions[table].edges as Record<\n keyof EntsDataModel[Table][\"edges\"],\n EdgeConfig\n >;\n}\n\nexport type UniqueIndexFieldName<T extends string[]> = T extends [infer Only]\n ? Only\n : T extends [infer Single, \"_creationTime\"]\n ? Single\n : never;\n\nexport function systemAwareGet<\n DataModel extends GenericDataModel,\n Table extends TableNamesInDataModel<DataModel>,\n>(db: GenericDatabaseReader<DataModel>, table: Table, id: GenericId<Table>) {\n return isSystemTable(table)\n ? db.system.get(table, id as any)\n : db.get(table, id);\n}\n\nexport function systemAwareQuery<\n DataModel extends GenericDataModel,\n Table extends TableNamesInDataModel<DataModel>,\n>(\n db: GenericDatabaseReader<DataModel>,\n table: Table,\n): QueryInitializer<NamedTableInfo<DataModel, Table>> {\n return isSystemTable(table)\n ? (db.system.query(table) as any)\n : db.query(table);\n}\n\nexport function isSystemTable(table: string): table is SystemTableNames {\n return table.startsWith(\"_\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuDO,SAAS,mBAGd,gBAA+B,OAAc;AAC7C,SAAO,eAAe,KAAK,EAAE;AAI/B;AAQO,SAAS,eAGd,IAAsC,OAAc,IAAsB;AAC1E,SAAO,cAAc,KAAK,IACtB,GAAG,OAAO,IAAI,OAAO,EAAS,IAC9B,GAAG,IAAI,OAAO,EAAE;AACtB;AAEO,SAAS,iBAId,IACA,OACoD;AACpD,SAAO,cAAc,KAAK,IACrB,GAAG,OAAO,MAAM,KAAK,IACtB,GAAG,MAAM,KAAK;AACpB;AAEO,SAAS,cAAc,OAA0C;AACtE,SAAO,MAAM,WAAW,GAAG;AAC7B;","names":[]}
|
package/dist/writer.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { GenericEdgeConfig, GenericEntsDataModel, Expand, DeletionConfig } from
|
|
|
2
2
|
import { GenericDocument, TableNamesInDataModel, DocumentByName, PaginationOptions, PaginationResult, IndexNames, NamedTableInfo, FilterBuilder, ExpressionOrValue, WithOptionalSystemFields, FieldTypeFromFieldPath, SearchIndexNames, SearchFilterBuilder, NamedSearchIndex, SearchFilter, GenericDataModel, GenericDatabaseReader, GenericDatabaseWriter, StorageWriter, Scheduler, IndexRangeBuilder, NamedIndex, IndexRange, WithoutSystemFields } from 'convex/server';
|
|
3
3
|
import { GenericId } from 'convex/values';
|
|
4
4
|
import { ScheduledDeleteFuncRef } from './deletion.js';
|
|
5
|
-
import { PromiseEdgeResult, EntsSystemDataModel, IndexFieldTypesForEq } from './shared.js';
|
|
5
|
+
import { PromiseEdgeResult, EntsSystemDataModel, UniqueIndexFieldName, IndexFieldTypesForEq } from './shared.js';
|
|
6
6
|
|
|
7
7
|
declare class WriterImplBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
|
|
8
8
|
protected ctx: EntMutationCtx<EntsDataModel>;
|
|
@@ -34,7 +34,6 @@ type EdgeChanges = Record<string, {
|
|
|
34
34
|
remove?: GenericId<any>[];
|
|
35
35
|
removeEdges?: GenericId<any>[];
|
|
36
36
|
}>;
|
|
37
|
-
declare function isSystemTable(table: string): boolean;
|
|
38
37
|
|
|
39
38
|
interface PromiseOrderedQueryOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
|
|
40
39
|
filter(predicate: (q: FilterBuilder<NamedTableInfo<EntsDataModel, Table>>) => ExpressionOrValue<boolean>): this;
|
|
@@ -45,6 +44,28 @@ interface PromiseOrderedQueryOrNull<EntsDataModel extends GenericEntsDataModel,
|
|
|
45
44
|
unique(): PromiseEntOrNull<EntsDataModel, Table>;
|
|
46
45
|
docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
|
|
47
46
|
}
|
|
47
|
+
interface PromiseOrderedIdsQueryOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<GenericId<Table>[] | null> {
|
|
48
|
+
/**
|
|
49
|
+
* Map over the relevant IDs.
|
|
50
|
+
*/
|
|
51
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => TOutput | Promise<TOutput>): PromiseArrayOrNull<TOutput>;
|
|
52
|
+
/**
|
|
53
|
+
* Paginate the relevant IDs.
|
|
54
|
+
*/
|
|
55
|
+
paginate(paginationOpts: PaginationOptions): PromiseIdsPaginationResultOrNull<EntsDataModel, Table>;
|
|
56
|
+
/**
|
|
57
|
+
* Take the first `n` relevant IDs.
|
|
58
|
+
*/
|
|
59
|
+
take(n: number): PromiseIdsOrNull<EntsDataModel, Table>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the first relevant ID, or `null` if there are no relevant IDs.
|
|
62
|
+
*/
|
|
63
|
+
first(): Promise<GenericId<Table> | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Returns the only relevant ID, or `null` if there are none or throws if there is more than one.
|
|
66
|
+
*/
|
|
67
|
+
unique(): Promise<GenericId<Table> | null>;
|
|
68
|
+
}
|
|
48
69
|
interface PromiseOrderedQueryWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
|
|
49
70
|
filter(predicate: (q: FilterBuilder<NamedTableInfo<EntsDataModel, Table>>) => ExpressionOrValue<boolean>): this;
|
|
50
71
|
map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
|
|
@@ -61,9 +82,9 @@ interface PromiseQueryWriterOrNull<EntsDataModel extends GenericEntsDataModel, T
|
|
|
61
82
|
order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseOrderedQueryWriterOrNull<EntsDataModel, Table>;
|
|
62
83
|
}
|
|
63
84
|
interface PromiseTableBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
|
|
64
|
-
getMany<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][
|
|
85
|
+
getMany<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, UniqueIndexFieldName<Indexes[Index]>>[]): PromiseEntsOrNulls<EntsDataModel, Table>;
|
|
65
86
|
getMany(ids: GenericId<Table>[]): PromiseEntsOrNulls<EntsDataModel, Table>;
|
|
66
|
-
getManyX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][
|
|
87
|
+
getManyX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, UniqueIndexFieldName<Indexes[Index]>>[]): PromiseEnts<EntsDataModel, Table>;
|
|
67
88
|
getManyX(ids: GenericId<Table>[]): PromiseEnts<EntsDataModel, Table>;
|
|
68
89
|
/**
|
|
69
90
|
* If given a valid ID for the given table, returns it, or returns null if the ID
|
|
@@ -130,6 +151,15 @@ interface PromiseOrderedQuery<EntsDataModel extends GenericEntsDataModel, Table
|
|
|
130
151
|
unique(): PromiseEntOrNull<EntsDataModel, Table>;
|
|
131
152
|
uniqueX(): PromiseEnt<EntsDataModel, Table>;
|
|
132
153
|
}
|
|
154
|
+
interface PromiseOrderedIdsQuery<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<GenericId<Table>[]> {
|
|
155
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => Promise<TOutput> | TOutput): PromiseArray<TOutput>;
|
|
156
|
+
paginate(paginationOpts: PaginationOptions): PromiseIdsPaginationResult<EntsDataModel, Table>;
|
|
157
|
+
take(n: number): PromiseIds<EntsDataModel, Table>;
|
|
158
|
+
first(): Promise<GenericId<Table> | null>;
|
|
159
|
+
firstX(): Promise<GenericId<Table>>;
|
|
160
|
+
unique(): Promise<GenericId<Table> | null>;
|
|
161
|
+
uniqueX(): Promise<GenericId<Table>>;
|
|
162
|
+
}
|
|
133
163
|
interface PromiseQuery<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQuery<EntsDataModel, Table> {
|
|
134
164
|
order(order: "asc" | "desc"): PromiseOrderedQuery<EntsDataModel, Table>;
|
|
135
165
|
}
|
|
@@ -141,6 +171,12 @@ interface PromisePaginationResult<EntsDataModel extends GenericEntsDataModel, Ta
|
|
|
141
171
|
docs(): Promise<PaginationResult<DocumentByName<EntsDataModel, Table>>>;
|
|
142
172
|
map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): Promise<PaginationResult<TOutput>>;
|
|
143
173
|
}
|
|
174
|
+
interface PromiseIdsPaginationResultOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<GenericId<Table>> | null> {
|
|
175
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => Promise<TOutput> | TOutput): Promise<PaginationResult<TOutput> | null>;
|
|
176
|
+
}
|
|
177
|
+
interface PromiseIdsPaginationResult<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<GenericId<Table>>> {
|
|
178
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => Promise<TOutput> | TOutput): Promise<PaginationResult<TOutput>>;
|
|
179
|
+
}
|
|
144
180
|
interface PromiseEntsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
|
|
145
181
|
map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
|
|
146
182
|
docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
|
|
@@ -155,6 +191,12 @@ interface PromiseEnts<EntsDataModel extends GenericEntsDataModel, Table extends
|
|
|
155
191
|
}
|
|
156
192
|
interface PromiseEntsOrNulls<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<(Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel> | null)[]> {
|
|
157
193
|
}
|
|
194
|
+
interface PromiseIdsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<GenericId<Table>[] | null> {
|
|
195
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
|
|
196
|
+
}
|
|
197
|
+
interface PromiseIds<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<GenericId<Table>[]> {
|
|
198
|
+
map<TOutput>(callbackFn: (value: GenericId<Table>, index: number, array: GenericId<Table>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
|
|
199
|
+
}
|
|
158
200
|
interface PromiseEdgeOrderedEntsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsOrNull<EntsDataModel, Table> {
|
|
159
201
|
/**
|
|
160
202
|
* Paginate the ents on the other end of the edge.
|
|
@@ -191,6 +233,13 @@ interface PromiseEdgeEntsOrNull<EntsDataModel extends GenericEntsDataModel, Tabl
|
|
|
191
233
|
order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEntsOrNull<EntsDataModel, Table>;
|
|
192
234
|
}
|
|
193
235
|
interface PromiseEdgeOrderedEntsWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsWriterOrNull<EntsDataModel, Table> {
|
|
236
|
+
/**
|
|
237
|
+
* Returns the IDs of the ents on the other end of the edge.
|
|
238
|
+
* Returns null if chained to a null result.
|
|
239
|
+
*
|
|
240
|
+
* Note that read rules are not applied to filter the returned IDs.
|
|
241
|
+
*/
|
|
242
|
+
ids(): PromiseOrderedIdsQueryOrNull<EntsDataModel, Table>;
|
|
194
243
|
/**
|
|
195
244
|
* Paginate the ents on the other end of the edge.
|
|
196
245
|
* Results are ordered by edge's `_creationTime`.
|
|
@@ -226,6 +275,12 @@ interface PromiseEdgeEntsWriterOrNull<EntsDataModel extends GenericEntsDataModel
|
|
|
226
275
|
order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEntsWriterOrNull<EntsDataModel, Table>;
|
|
227
276
|
}
|
|
228
277
|
interface PromiseEdgeOrderedEnts<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEnts<EntsDataModel, Table> {
|
|
278
|
+
/**
|
|
279
|
+
* Returns the IDs of the ents on the other end of the edge.
|
|
280
|
+
*
|
|
281
|
+
* Note that read rules are not applied to filter the returned IDs.
|
|
282
|
+
*/
|
|
283
|
+
ids(): PromiseOrderedIdsQuery<EntsDataModel, Table>;
|
|
229
284
|
/**
|
|
230
285
|
* Paginate the ents on the other end of the edge.
|
|
231
286
|
* Results are ordered by edge's `_creationTime`.
|
|
@@ -265,6 +320,12 @@ interface PromiseEdgeEnts<EntsDataModel extends GenericEntsDataModel, Table exte
|
|
|
265
320
|
* @param id The ID of the ent on the other end of the edge
|
|
266
321
|
*/
|
|
267
322
|
has(id: GenericId<Table>): Promise<boolean>;
|
|
323
|
+
/**
|
|
324
|
+
* Returns the IDs of the ents on the other end of the edge.
|
|
325
|
+
*
|
|
326
|
+
* Note that read rules are not applied to filter the returned IDs.
|
|
327
|
+
*/
|
|
328
|
+
ids(): PromiseOrderedIdsQuery<EntsDataModel, Table>;
|
|
268
329
|
/**
|
|
269
330
|
* Query the ents on the other end of the edge
|
|
270
331
|
* ordered by edge's `_creationTime`.
|
|
@@ -272,6 +333,12 @@ interface PromiseEdgeEnts<EntsDataModel extends GenericEntsDataModel, Table exte
|
|
|
272
333
|
order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEnts<EntsDataModel, Table>;
|
|
273
334
|
}
|
|
274
335
|
interface PromiseEdgeOrderedEntsWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsWriter<EntsDataModel, Table> {
|
|
336
|
+
/**
|
|
337
|
+
* Returns the IDs of the ents on the other end of the edge.
|
|
338
|
+
*
|
|
339
|
+
* Note that read rules are not applied to filter the returned IDs.
|
|
340
|
+
*/
|
|
341
|
+
ids(): PromiseOrderedIdsQuery<EntsDataModel, Table>;
|
|
275
342
|
/**
|
|
276
343
|
* Paginate the ents on the other end of the edge.
|
|
277
344
|
* Results are ordered by edge's `_creationTime`.
|
|
@@ -346,7 +413,14 @@ type EntsTable<EntsDataModel extends GenericEntsDataModel> = EntsTableReader<Ent
|
|
|
346
413
|
system: EntsTableReader<EntsSystemDataModel>;
|
|
347
414
|
};
|
|
348
415
|
type EntsTableWriter<EntsDataModel extends GenericEntsDataModel> = {
|
|
416
|
+
/**
|
|
417
|
+
* Read from and write to the given `table` using the index with the given `indexName`.
|
|
418
|
+
* Without the `indexRange` argument, the use of the index only affects the order of the results.
|
|
419
|
+
*/
|
|
349
420
|
<Table extends TableNamesInDataModel<EntsDataModel>, IndexName extends IndexNames<NamedTableInfo<EntsDataModel, Table>>>(table: Table, indexName: IndexName, indexRange?: (q: IndexRangeBuilder<DocumentByName<EntsDataModel, Table>, NamedIndex<NamedTableInfo<EntsDataModel, Table>, IndexName>>) => IndexRange): PromiseQueryWriter<EntsDataModel, Table>;
|
|
421
|
+
/**
|
|
422
|
+
* Read from and write to the given `table`.
|
|
423
|
+
*/
|
|
350
424
|
<Table extends TableNamesInDataModel<EntsDataModel>>(table: Table): PromiseTableWriter<Table, EntsDataModel>;
|
|
351
425
|
system: EntsTableReader<EntsSystemDataModel>;
|
|
352
426
|
};
|
|
@@ -364,12 +438,34 @@ type PromiseEdgeWriter<EntsDataModel extends GenericEntsDataModel, Table extends
|
|
|
364
438
|
type PromiseEdgeWriterOrThrow<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>, Edge extends keyof EntsDataModel[Table]["edges"], Config extends GenericEdgeConfig = EntsDataModel[Table]["edges"][Edge], ToTable extends TableNamesInDataModel<EntsDataModel> = EntsDataModel[Table]["edges"][Edge]["to"]> = PromiseEdgeResult<Config, PromiseEdgeEntsWriter<EntsDataModel, ToTable>, PromiseQueryWriter<EntsDataModel, ToTable>, PromiseEntWriter<EntsDataModel, ToTable>, PromiseEntWriter<EntsDataModel, ToTable>>;
|
|
365
439
|
type PromiseEdgeWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>, Edge extends keyof EntsDataModel[Table]["edges"], Config extends GenericEdgeConfig = EntsDataModel[Table]["edges"][Edge], ToTable extends TableNamesInDataModel<EntsDataModel> = EntsDataModel[Table]["edges"][Edge]["to"]> = PromiseEdgeResult<Config, PromiseEdgeEntsWriterOrNull<EntsDataModel, ToTable>, PromiseQueryWriterOrNull<EntsDataModel, ToTable>, PromiseEntWriterOrNull<EntsDataModel, ToTable>, PromiseEntWriterOrNull<EntsDataModel, ToTable>>;
|
|
366
440
|
interface PromiseOrderedQueryWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]>, PromiseOrderedQueryBase<EntsDataModel, Table> {
|
|
441
|
+
/**
|
|
442
|
+
* Paginate the relevant ents.
|
|
443
|
+
*/
|
|
367
444
|
paginate(paginationOpts: PaginationOptions): PromisePaginationResultWriter<EntsDataModel, Table>;
|
|
445
|
+
/**
|
|
446
|
+
* Map over the relevant ents.
|
|
447
|
+
*/
|
|
368
448
|
map<TOutput>(callbackFn: (value: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArray<TOutput>;
|
|
449
|
+
/**
|
|
450
|
+
* Take the first `n` relevant ents.
|
|
451
|
+
*/
|
|
369
452
|
take(n: number): PromiseEntsWriter<EntsDataModel, Table>;
|
|
453
|
+
/**
|
|
454
|
+
* Returns the first relevant ent, or `null` if there are no ents.
|
|
455
|
+
*/
|
|
370
456
|
first(): PromiseEntWriterOrNull<EntsDataModel, Table>;
|
|
457
|
+
/**
|
|
458
|
+
* Returns the first relevant ent, or throws if there are no ents.
|
|
459
|
+
*/
|
|
371
460
|
firstX(): PromiseEntWriter<EntsDataModel, Table>;
|
|
461
|
+
/**
|
|
462
|
+
* Returns the only relevant ent, `null` if there are none,
|
|
463
|
+
* or throws if there are more than one.
|
|
464
|
+
*/
|
|
372
465
|
unique(): PromiseEntWriterOrNull<EntsDataModel, Table>;
|
|
466
|
+
/**
|
|
467
|
+
* Returns the only relevant ent, or throws if there are none or more than one.
|
|
468
|
+
*/
|
|
373
469
|
uniqueX(): PromiseEntWriter<EntsDataModel, Table>;
|
|
374
470
|
}
|
|
375
471
|
interface PromiseQueryWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQueryWriter<EntsDataModel, Table> {
|
|
@@ -445,6 +541,9 @@ interface PromiseEntWriterOrNull<EntsDataModel extends GenericEntsDataModel, Tab
|
|
|
445
541
|
doc(): Promise<DocumentByName<EntsDataModel, Table> | null>;
|
|
446
542
|
}
|
|
447
543
|
interface PromiseEntWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>> {
|
|
544
|
+
/**
|
|
545
|
+
* Traverse the given `edge`.
|
|
546
|
+
*/
|
|
448
547
|
edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeWriter<EntsDataModel, Table, Edge>;
|
|
449
548
|
edgeX<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeWriterOrThrow<EntsDataModel, Table, Edge>;
|
|
450
549
|
doc(): Promise<DocumentByName<EntsDataModel, Table>>;
|
|
@@ -551,4 +650,4 @@ declare function getWriteRule(entDefinitions: GenericEntsDataModel, table: strin
|
|
|
551
650
|
}) => Promise<boolean>) | undefined;
|
|
552
651
|
declare function getDeletionConfig<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(entDefinitions: EntsDataModel, table: Table): DeletionConfig | undefined;
|
|
553
652
|
|
|
554
|
-
export {
|
|
653
|
+
export { type PromiseEntId as $, type PromiseEdgeOrderedEntsWriter as A, type PromiseEdgeEntsWriter as B, type PromiseEntOrNull as C, type PromiseEnt as D, type PromiseArrayOrNull as E, type EdgeChanges, type PromiseArray as F, entWrapper as G, entsTableFactory as H, type EntsTable as I, type EntsTableWriter as J, type Ent as K, type GenericEnt as L, type PromiseEdge as M, type PromiseEdgeOrThrow as N, type PromiseEdgeWriter as O, type PromiseOrderedQueryOrNull as P, type PromiseEdgeWriterOrThrow as Q, type PromiseEdgeWriterOrNull as R, type PromiseOrderedQueryWriter as S, type PromiseQueryWriter as T, type PromiseEntsWriter as U, type PromisePaginationResultWriterOrNull as V, type PromisePaginationResultWriter as W, type WithEdgeInserts, type WithEdgePatches, type WithEdges, WriterImplBase, type PromiseTableWriter as X, type PromiseEntWriterOrNull as Y, type PromiseEntWriter as Z, type GenericEntWriter as _, type PromiseOrderedIdsQueryOrNull as a, type EntQueryCtx as a0, type EntMutationCtx as a1, type DocRetriever as a2, addEntRules as a3, getReadRule as a4, getWriteRule as a5, getDeletionConfig as a6, type PromiseOrderedQueryWriterOrNull as b, type PromiseQueryOrNull as c, type PromiseQueryWriterOrNull as d, type PromiseTableBase as e, type PromiseTable as f, type PromiseOrderedQueryBase as g, type PromiseOrderedQuery as h, type PromiseOrderedIdsQuery as i, type PromiseQuery as j, type PromisePaginationResultOrNull as k, type PromisePaginationResult as l, type PromiseIdsPaginationResultOrNull as m, type PromiseIdsPaginationResult as n, type PromiseEntsOrNull as o, type PromiseEntsWriterOrNull as p, type PromiseEnts as q, type PromiseEntsOrNulls as r, type PromiseIdsOrNull as s, type PromiseIds as t, type PromiseEdgeOrderedEntsOrNull as u, type PromiseEdgeEntsOrNull as v, type PromiseEdgeOrderedEntsWriterOrNull as w, type PromiseEdgeEntsWriterOrNull as x, type PromiseEdgeOrderedEnts as y, type PromiseEdgeEnts as z };
|
package/dist/writer.js
CHANGED
|
@@ -20,8 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/writer.ts
|
|
21
21
|
var writer_exports = {};
|
|
22
22
|
__export(writer_exports, {
|
|
23
|
-
WriterImplBase: () => WriterImplBase
|
|
24
|
-
isSystemTable: () => isSystemTable
|
|
23
|
+
WriterImplBase: () => WriterImplBase
|
|
25
24
|
});
|
|
26
25
|
module.exports = __toCommonJS(writer_exports);
|
|
27
26
|
var import_server2 = require("convex/server");
|
|
@@ -40,6 +39,12 @@ function edgeCompoundIndexNameRaw(idA, idB) {
|
|
|
40
39
|
function getEdgeDefinitions(entDefinitions, table) {
|
|
41
40
|
return entDefinitions[table].edges;
|
|
42
41
|
}
|
|
42
|
+
function systemAwareGet(db, table, id) {
|
|
43
|
+
return isSystemTable(table) ? db.system.get(table, id) : db.get(table, id);
|
|
44
|
+
}
|
|
45
|
+
function isSystemTable(table) {
|
|
46
|
+
return table.startsWith("_");
|
|
47
|
+
}
|
|
43
48
|
|
|
44
49
|
// src/functions.ts
|
|
45
50
|
var PromiseQueryOrNullImpl = class _PromiseQueryOrNullImpl extends Promise {
|
|
@@ -66,7 +71,7 @@ var PromiseQueryOrNullImpl = class _PromiseQueryOrNullImpl extends Promise {
|
|
|
66
71
|
);
|
|
67
72
|
}
|
|
68
73
|
map(callbackFn) {
|
|
69
|
-
return new
|
|
74
|
+
return new PromiseArrayOrNullImpl(async () => {
|
|
70
75
|
const array = await this;
|
|
71
76
|
if (array === null) {
|
|
72
77
|
return null;
|
|
@@ -227,6 +232,90 @@ var PromiseQueryOrNullImpl = class _PromiseQueryOrNullImpl extends Promise {
|
|
|
227
232
|
);
|
|
228
233
|
}
|
|
229
234
|
};
|
|
235
|
+
var PromiseIdsQueryOrNullImpl = class extends Promise {
|
|
236
|
+
constructor(retrieve, field) {
|
|
237
|
+
super(() => {
|
|
238
|
+
});
|
|
239
|
+
this.retrieve = retrieve;
|
|
240
|
+
this.field = field;
|
|
241
|
+
}
|
|
242
|
+
map(callbackFn) {
|
|
243
|
+
return new PromiseArrayOrNullImpl(async () => {
|
|
244
|
+
const array = await this;
|
|
245
|
+
if (array === null) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
return await Promise.all(array.map(callbackFn));
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
paginate(paginationOpts) {
|
|
252
|
+
return new PromiseIdsPaginationResultOrNullImpl(async () => {
|
|
253
|
+
const query = await this.retrieve();
|
|
254
|
+
if (query === null) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
const result = await query.paginate(paginationOpts);
|
|
258
|
+
return {
|
|
259
|
+
...result,
|
|
260
|
+
page: result.page.map((id) => this._getId(id))
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
take(n) {
|
|
265
|
+
return new PromiseIdsOrNullImpl(async () => {
|
|
266
|
+
const query = await this.retrieve();
|
|
267
|
+
if (query === null) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
const result = await query.take(n);
|
|
271
|
+
return result.map((id) => this._getId(id));
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
async first() {
|
|
275
|
+
const query = await this.retrieve();
|
|
276
|
+
if (query === null) {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
const doc = await query.first();
|
|
280
|
+
if (doc === null) {
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
return this._getId(doc);
|
|
284
|
+
}
|
|
285
|
+
async firstX() {
|
|
286
|
+
const id = await this.first();
|
|
287
|
+
if (id === null) {
|
|
288
|
+
throw new Error("Expected at least one ID, but got none");
|
|
289
|
+
}
|
|
290
|
+
return id;
|
|
291
|
+
}
|
|
292
|
+
async unique() {
|
|
293
|
+
const query = await this.retrieve();
|
|
294
|
+
if (query === null) {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
const result = await query.unique();
|
|
298
|
+
if (result === null) {
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
return this._getId(result);
|
|
302
|
+
}
|
|
303
|
+
async uniqueX() {
|
|
304
|
+
const id = await this.unique();
|
|
305
|
+
if (id === null) {
|
|
306
|
+
throw new Error("Expected one unique ID, but got none");
|
|
307
|
+
}
|
|
308
|
+
return id;
|
|
309
|
+
}
|
|
310
|
+
then(onfulfilled, onrejected) {
|
|
311
|
+
return this.retrieve().then((query) => query === null ? null : query.collect()).then(
|
|
312
|
+
(docs) => docs === null ? null : docs.map((doc) => this._getId(doc))
|
|
313
|
+
).then(onfulfilled, onrejected);
|
|
314
|
+
}
|
|
315
|
+
_getId(doc) {
|
|
316
|
+
return doc[this.field];
|
|
317
|
+
}
|
|
318
|
+
};
|
|
230
319
|
var PromisePaginationResultOrNullImpl = class extends Promise {
|
|
231
320
|
constructor(ctx, entDefinitions, table, retrieve) {
|
|
232
321
|
super(() => {
|
|
@@ -273,6 +362,26 @@ var PromisePaginationResultOrNullImpl = class extends Promise {
|
|
|
273
362
|
).then(onfulfilled, onrejected);
|
|
274
363
|
}
|
|
275
364
|
};
|
|
365
|
+
var PromiseIdsPaginationResultOrNullImpl = class extends Promise {
|
|
366
|
+
constructor(retrieve) {
|
|
367
|
+
super(() => {
|
|
368
|
+
});
|
|
369
|
+
this.retrieve = retrieve;
|
|
370
|
+
}
|
|
371
|
+
async map(callbackFn) {
|
|
372
|
+
const result = await this;
|
|
373
|
+
if (result === null) {
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
return {
|
|
377
|
+
...result,
|
|
378
|
+
page: await Promise.all(result.page.map(callbackFn))
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
then(onfulfilled, onrejected) {
|
|
382
|
+
return this.retrieve().then(onfulfilled, onrejected);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
276
385
|
var PromiseEntsOrNullImpl = class extends Promise {
|
|
277
386
|
constructor(ctx, entDefinitions, table, retrieve, throwIfNull) {
|
|
278
387
|
super(() => {
|
|
@@ -284,7 +393,7 @@ var PromiseEntsOrNullImpl = class extends Promise {
|
|
|
284
393
|
this.throwIfNull = throwIfNull;
|
|
285
394
|
}
|
|
286
395
|
map(callbackFn) {
|
|
287
|
-
return new
|
|
396
|
+
return new PromiseArrayOrNullImpl(async () => {
|
|
288
397
|
const array = await this;
|
|
289
398
|
if (array === null) {
|
|
290
399
|
return null;
|
|
@@ -386,11 +495,34 @@ var PromiseEntsOrNullImpl = class extends Promise {
|
|
|
386
495
|
).then(onfulfilled, onrejected);
|
|
387
496
|
}
|
|
388
497
|
};
|
|
498
|
+
var PromiseIdsOrNullImpl = class extends Promise {
|
|
499
|
+
constructor(retrieve) {
|
|
500
|
+
super(() => {
|
|
501
|
+
});
|
|
502
|
+
this.retrieve = retrieve;
|
|
503
|
+
}
|
|
504
|
+
map(callbackFn) {
|
|
505
|
+
return new PromiseArrayOrNullImpl(async () => {
|
|
506
|
+
const array = await this;
|
|
507
|
+
if (array === null) {
|
|
508
|
+
return null;
|
|
509
|
+
}
|
|
510
|
+
return await Promise.all(array.map(callbackFn));
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
then(onfulfilled, onrejected) {
|
|
514
|
+
return this.retrieve().then(onfulfilled, onrejected);
|
|
515
|
+
}
|
|
516
|
+
};
|
|
389
517
|
var PromiseEdgeOrNullImpl = class _PromiseEdgeOrNullImpl extends PromiseEntsOrNullImpl {
|
|
390
518
|
constructor(ctx, entDefinitions, table, edgeDefinition, retrieveSourceId, retrieveQuery, retrieveDoc = async (edgeDoc) => {
|
|
391
519
|
const sourceId = edgeDoc[edgeDefinition.field];
|
|
392
520
|
const targetId = edgeDoc[edgeDefinition.ref];
|
|
393
|
-
const doc = await
|
|
521
|
+
const doc = await systemAwareGet(
|
|
522
|
+
this.ctx.db,
|
|
523
|
+
edgeDefinition.to,
|
|
524
|
+
targetId
|
|
525
|
+
);
|
|
394
526
|
if (doc === null) {
|
|
395
527
|
throw new Error(
|
|
396
528
|
`Dangling reference for edge "${edgeDefinition.name}" in table "${this.table}" for document with ID "${sourceId}": Could not find a document with ID "${targetId}" in table "${edgeDefinition.to}" (edge document ID is "${edgeDoc._id}").`
|
|
@@ -417,6 +549,12 @@ var PromiseEdgeOrNullImpl = class _PromiseEdgeOrNullImpl extends PromiseEntsOrNu
|
|
|
417
549
|
this.retrieveQuery = retrieveQuery;
|
|
418
550
|
this.retrieveDoc = retrieveDoc;
|
|
419
551
|
}
|
|
552
|
+
ids() {
|
|
553
|
+
return new PromiseIdsQueryOrNullImpl(
|
|
554
|
+
() => this.retrieveQuery(),
|
|
555
|
+
this.edgeDefinition.ref
|
|
556
|
+
);
|
|
557
|
+
}
|
|
420
558
|
async has(targetId) {
|
|
421
559
|
const sourceId = await this.retrieveSourceId();
|
|
422
560
|
if (sourceId === null) {
|
|
@@ -686,7 +824,11 @@ var PromiseEntOrNullImpl = class extends Promise {
|
|
|
686
824
|
`Unexpected null reference for edge "${edgeDefinition.name}" in table "${this.table}" on document with ID "${id}": Expected an ID for a document in table "${edgeDefinition.to}".`
|
|
687
825
|
);
|
|
688
826
|
}
|
|
689
|
-
const otherDoc = await
|
|
827
|
+
const otherDoc = await systemAwareGet(
|
|
828
|
+
this.ctx.db,
|
|
829
|
+
edgeDefinition.to,
|
|
830
|
+
otherId
|
|
831
|
+
);
|
|
690
832
|
if (otherDoc === null && edgeDefinition.to !== "_scheduled_functions") {
|
|
691
833
|
throw new Error(
|
|
692
834
|
`Dangling reference for edge "${edgeDefinition.name}" in table "${this.table}" on document with ID "${id}": Could not find a document with ID "${otherId}" in table "${edgeDefinition.to}".`
|
|
@@ -700,7 +842,7 @@ var PromiseEntOrNullImpl = class extends Promise {
|
|
|
700
842
|
);
|
|
701
843
|
}
|
|
702
844
|
};
|
|
703
|
-
var
|
|
845
|
+
var PromiseArrayOrNullImpl = class extends Promise {
|
|
704
846
|
constructor(retrieve) {
|
|
705
847
|
super(() => {
|
|
706
848
|
});
|
|
@@ -894,7 +1036,7 @@ var PromiseEntWriterImpl = class extends PromiseEntOrNullImpl {
|
|
|
894
1036
|
}
|
|
895
1037
|
if (edgeDefinition.cardinality === "single") {
|
|
896
1038
|
if (edgeDefinition.type === "ref") {
|
|
897
|
-
const oldDoc = await this.ctx.db.get(docId);
|
|
1039
|
+
const oldDoc = await this.ctx.db.get(this.table, docId);
|
|
898
1040
|
if (oldDoc[key] !== void 0 && oldDoc[key] !== idOrIds) {
|
|
899
1041
|
throw new Error("Cannot set 1:1 edge from ref end.");
|
|
900
1042
|
}
|
|
@@ -956,7 +1098,10 @@ var PromiseEntIdImpl = class extends Promise {
|
|
|
956
1098
|
this.table,
|
|
957
1099
|
async () => {
|
|
958
1100
|
const id = await this.retrieve();
|
|
959
|
-
return {
|
|
1101
|
+
return {
|
|
1102
|
+
id,
|
|
1103
|
+
doc: async () => systemAwareGet(this.ctx.db, this.table, id)
|
|
1104
|
+
};
|
|
960
1105
|
},
|
|
961
1106
|
true
|
|
962
1107
|
);
|
|
@@ -1078,7 +1223,7 @@ var WriterImplBase = class _WriterImplBase {
|
|
|
1078
1223
|
}
|
|
1079
1224
|
} else if (edgeDefinition.cardinality === "single") {
|
|
1080
1225
|
if (edgeDefinition.deletion !== void 0 && (!isDeletingSoftly || edgeDefinition.deletion === "soft")) {
|
|
1081
|
-
const doc = await this.ctx.db.get(id);
|
|
1226
|
+
const doc = await this.ctx.db.get(this.table, id);
|
|
1082
1227
|
if (doc !== null) {
|
|
1083
1228
|
const otherId = doc[edgeDefinition.field];
|
|
1084
1229
|
edges[key] = {
|
|
@@ -1284,7 +1429,7 @@ var WriterImplBase = class _WriterImplBase {
|
|
|
1284
1429
|
if (id !== void 0) {
|
|
1285
1430
|
const readPolicy = getReadRule(this.entDefinitions, this.table);
|
|
1286
1431
|
if (readPolicy !== void 0) {
|
|
1287
|
-
const doc = await this.ctx.db.get(id);
|
|
1432
|
+
const doc = await this.ctx.db.get(this.table, id);
|
|
1288
1433
|
if (doc === null) {
|
|
1289
1434
|
throw new Error(
|
|
1290
1435
|
`Cannot update document with ID "${id}" in table "${this.table} because it does not exist"`
|
|
@@ -1303,7 +1448,7 @@ var WriterImplBase = class _WriterImplBase {
|
|
|
1303
1448
|
return;
|
|
1304
1449
|
}
|
|
1305
1450
|
const ent = id === void 0 ? void 0 : entWrapper(
|
|
1306
|
-
await this.ctx.db.get(id),
|
|
1451
|
+
await this.ctx.db.get(this.table, id),
|
|
1307
1452
|
this.ctx,
|
|
1308
1453
|
this.entDefinitions,
|
|
1309
1454
|
this.table
|
|
@@ -1333,12 +1478,8 @@ var WriterImplBase = class _WriterImplBase {
|
|
|
1333
1478
|
}
|
|
1334
1479
|
}
|
|
1335
1480
|
};
|
|
1336
|
-
function isSystemTable(table) {
|
|
1337
|
-
return table.startsWith("_");
|
|
1338
|
-
}
|
|
1339
1481
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1340
1482
|
0 && (module.exports = {
|
|
1341
|
-
WriterImplBase
|
|
1342
|
-
isSystemTable
|
|
1483
|
+
WriterImplBase
|
|
1343
1484
|
});
|
|
1344
1485
|
//# sourceMappingURL=writer.js.map
|