convex-ents 0.15.0 → 0.17.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "convex-ents",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "Relations, default values, unique fields, RLS for Convex",
5
5
  "keywords": [
6
6
  "relations",
@@ -20,21 +20,26 @@
20
20
  "main": "./dist/index.js",
21
21
  "types": "./dist/index.d.ts",
22
22
  "scripts": {
23
+ "postinstall": "cd test && npm install",
23
24
  "build": "npx tsup src --dts --sourcemap --clean",
24
25
  "docs": "cd docs && npm run dev",
25
26
  "lint": "tsc && eslint . && cd test && npm run lint",
26
27
  "prepublishOnly": "npm run build && npm run test:once",
28
+ "typecheck": "tsc --noEmit && cd test && npm run typecheck",
27
29
  "test": "cd test && npm run test",
28
30
  "test:once": "cd test && npm run test:once"
29
31
  },
30
32
  "peerDependencies": {
31
- "convex": "^1.13.0"
33
+ "convex": "^1.31.3"
32
34
  },
33
35
  "devDependencies": {
34
- "@types/node": "20.6.0",
35
- "@typescript-eslint/eslint-plugin": "^6.18.1",
36
- "convex-helpers": "^0.1.44",
37
- "eslint": "8.49.0",
36
+ "@eslint/eslintrc": "^3.3.1",
37
+ "@eslint/js": "^9.39.1",
38
+ "@types/node": "^20.19.0",
39
+ "@typescript-eslint/eslint-plugin": "^8.47.0",
40
+ "convex-helpers": "^0.1.104",
41
+ "eslint": "^9.39.1",
42
+ "globals": "^16.5.0",
38
43
  "npm-run-all": "^4.1.5",
39
44
  "tsup": "^8.0.1",
40
45
  "typescript": "^5.4.0"
@@ -1,559 +0,0 @@
1
- import { GenericEntsDataModel, GenericEdgeConfig, Expand, DeletionConfig } from './schema.js';
2
- import * as convex_values from 'convex/values';
3
- import { GenericId } from 'convex/values';
4
- import { TableNamesInDataModel, GenericDocument, DocumentByName, FilterBuilder, NamedTableInfo, ExpressionOrValue, PaginationOptions, IndexNames, FieldTypeFromFieldPath, SearchIndexNames, SearchFilterBuilder, NamedSearchIndex, SearchFilter, PaginationResult, IndexRangeBuilder, NamedIndex, IndexRange, WithoutSystemFields, WithOptionalSystemFields, GenericDataModel, GenericDatabaseReader, GenericDatabaseWriter, StorageWriter, Scheduler } from 'convex/server';
5
- import { ScheduledDeleteFuncRef } from './deletion.js';
6
- import { IndexFieldTypesForEq, EntsSystemDataModel, PromiseEdgeResult } from './shared.js';
7
-
8
- declare class WriterImplBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
9
- protected ctx: EntMutationCtx<EntsDataModel>;
10
- protected entDefinitions: EntsDataModel;
11
- protected table: Table;
12
- constructor(ctx: EntMutationCtx<EntsDataModel>, entDefinitions: EntsDataModel, table: Table);
13
- deleteId(id: GenericId<any>, behavior: "default" | "soft" | "hard"): Promise<GenericId<any>>;
14
- deleteIdIn(id: GenericId<any>, table: string, cascadingSoft: boolean): Promise<void>;
15
- deleteSystem(table: string, id: GenericId<any>): Promise<void>;
16
- writeEdges(docId: GenericId<any>, changes: EdgeChanges, deleteSoftly?: boolean): Promise<void>;
17
- checkUniqueness(value: Partial<GenericDocument>, id?: GenericId<any>): Promise<void>;
18
- fieldsOnly(value: Partial<WithEdgePatches<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>): GenericDocument;
19
- checkReadAndWriteRule(operation: "create" | "update" | "delete", id: GenericId<Table> | undefined, value: Partial<GenericDocument> | undefined): Promise<void>;
20
- }
21
- type WithEdgeInserts<Document extends GenericDocument, Edges extends Record<string, GenericEdgeConfig>> = Document & {
22
- [key in keyof Edges as Edges[key]["cardinality"] extends "single" ? Edges[key]["type"] extends "field" ? never : key : key]?: Edges[key]["cardinality"] extends "single" ? GenericId<Edges[key]["to"]> : GenericId<Edges[key]["to"]>[];
23
- };
24
- type WithEdges<Document extends GenericDocument, Edges extends Record<string, GenericEdgeConfig>> = Document & {
25
- [key in keyof Edges as Edges[key]["cardinality"] extends "multiple" ? Edges[key]["type"] extends "ref" ? key : never : never]?: GenericId<Edges[key]["to"]>[];
26
- };
27
- type WithEdgePatches<Document extends GenericDocument, Edges extends Record<string, GenericEdgeConfig>> = Document & {
28
- [key in keyof Edges as Edges[key]["cardinality"] extends "multiple" ? Edges[key]["type"] extends "ref" ? key : never : never]?: {
29
- add?: GenericId<Edges[key]["to"]>[];
30
- remove?: GenericId<Edges[key]["to"]>[];
31
- };
32
- };
33
- type EdgeChanges = Record<string, {
34
- add?: GenericId<any>[];
35
- remove?: GenericId<any>[];
36
- removeEdges?: GenericId<any>[];
37
- }>;
38
- declare function isSystemTable(table: string): boolean;
39
-
40
- interface PromiseOrderedQueryOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
41
- filter(predicate: (q: FilterBuilder<NamedTableInfo<EntsDataModel, Table>>) => ExpressionOrValue<boolean>): this;
42
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => TOutput | Promise<TOutput>): PromiseArrayOrNull<TOutput>;
43
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultOrNull<EntsDataModel, Table>;
44
- take(n: number): PromiseEntsOrNull<EntsDataModel, Table>;
45
- first(): PromiseEntOrNull<EntsDataModel, Table>;
46
- unique(): PromiseEntOrNull<EntsDataModel, Table>;
47
- docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
48
- }
49
- interface PromiseOrderedQueryWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
50
- filter(predicate: (q: FilterBuilder<NamedTableInfo<EntsDataModel, Table>>) => ExpressionOrValue<boolean>): this;
51
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
52
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultOrNull<EntsDataModel, Table>;
53
- take(n: number): PromiseEntsWriterOrNull<EntsDataModel, Table>;
54
- first(): PromiseEntWriterOrNull<EntsDataModel, Table>;
55
- unique(): PromiseEntWriterOrNull<EntsDataModel, Table>;
56
- docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
57
- }
58
- interface PromiseQueryOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQueryOrNull<EntsDataModel, Table> {
59
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseOrderedQueryOrNull<EntsDataModel, Table>;
60
- }
61
- interface PromiseQueryWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQueryWriterOrNull<EntsDataModel, Table> {
62
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseOrderedQueryWriterOrNull<EntsDataModel, Table>;
63
- }
64
- interface PromiseTableBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
65
- getMany<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>[]): PromiseEntsOrNulls<EntsDataModel, Table>;
66
- getMany(ids: GenericId<Table>[]): PromiseEntsOrNulls<EntsDataModel, Table>;
67
- getManyX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, values: FieldTypeFromFieldPath<DocumentByName<EntsDataModel, Table>, Indexes[Index][0]>[]): PromiseEnts<EntsDataModel, Table>;
68
- getManyX(ids: GenericId<Table>[]): PromiseEnts<EntsDataModel, Table>;
69
- /**
70
- * If given a valid ID for the given table, returns it, or returns null if the ID
71
- * is from a different table or is not a valid ID.
72
- *
73
- * This does not guarantee that the ID exists (i.e. `table("foo").get(id)` may return `null`).
74
- */
75
- normalizeId(id: string): GenericId<Table> | null;
76
- /**
77
- * If given a valid ID for the given table, returns it, or throws if the ID
78
- * is from a different table or is not a valid ID.
79
- *
80
- * This does not guarantee that the ID exists (i.e. `table("foo").get(id)` may return `null`).
81
- */
82
- normalizeIdX(id: string): GenericId<Table>;
83
- }
84
- interface PromiseTable<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseQuery<EntsDataModel, Table>, PromiseTableBase<EntsDataModel, Table> {
85
- get<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, ...values: IndexFieldTypesForEq<EntsDataModel, Table, Indexes[Index]>): PromiseEntOrNull<EntsDataModel, Table>;
86
- get(id: GenericId<Table>): PromiseEntOrNull<EntsDataModel, Table>;
87
- /**
88
- * Fetch a unique document from the DB using given index, throw if it doesn't exist.
89
- */
90
- getX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, ...values: IndexFieldTypesForEq<EntsDataModel, Table, Indexes[Index]>): PromiseEnt<EntsDataModel, Table>;
91
- /**
92
- * Fetch a document from the DB for a given ID, throw if it doesn't exist.
93
- */
94
- getX(id: GenericId<Table>): PromiseEnt<EntsDataModel, Table>;
95
- /**
96
- * Return all documents in the table in given order.
97
- * Sort either by given index or by _creationTime.
98
- */
99
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseOrderedQuery<EntsDataModel, Table>;
100
- /**
101
- * Query by running a full text search against a search index.
102
- *
103
- * Search queries must always search for some text within the index's
104
- * `searchField`. This query can optionally add equality filters for any
105
- * `filterFields` specified in the index.
106
- *
107
- * Documents will be returned in relevance order based on how well they
108
- * match the search text.
109
- *
110
- * To learn about full text search, see [Indexes](https://docs.convex.dev/text-search).
111
- *
112
- * @param indexName - The name of the search index to query.
113
- * @param searchFilter - A search filter expression constructed with the
114
- * supplied {@link SearchFilterBuilder}. This defines the full text search to run
115
- * along with equality filtering to run within the search index.
116
- * @returns - A query that searches for matching documents, returning them
117
- * in relevancy order.
118
- */
119
- search<IndexName extends SearchIndexNames<NamedTableInfo<EntsDataModel, Table>>>(indexName: IndexName, searchFilter: (q: SearchFilterBuilder<DocumentByName<EntsDataModel, Table>, NamedSearchIndex<NamedTableInfo<EntsDataModel, Table>, IndexName>>) => SearchFilter): PromiseOrderedQuery<EntsDataModel, Table>;
120
- }
121
- interface PromiseOrderedQueryBase<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
122
- filter(predicate: (q: FilterBuilder<NamedTableInfo<EntsDataModel, Table>>) => ExpressionOrValue<boolean>): this;
123
- docs(): Promise<DocumentByName<EntsDataModel, Table>[]>;
124
- }
125
- interface PromiseOrderedQuery<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]>, PromiseOrderedQueryBase<EntsDataModel, Table> {
126
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArray<TOutput>;
127
- paginate(paginationOpts: PaginationOptions): PromisePaginationResult<EntsDataModel, Table>;
128
- take(n: number): PromiseEnts<EntsDataModel, Table>;
129
- first(): PromiseEntOrNull<EntsDataModel, Table>;
130
- firstX(): PromiseEnt<EntsDataModel, Table>;
131
- unique(): PromiseEntOrNull<EntsDataModel, Table>;
132
- uniqueX(): PromiseEnt<EntsDataModel, Table>;
133
- }
134
- interface PromiseQuery<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQuery<EntsDataModel, Table> {
135
- order(order: "asc" | "desc"): PromiseOrderedQuery<EntsDataModel, Table>;
136
- }
137
- interface PromisePaginationResultOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>> | null> {
138
- docs(): Promise<PaginationResult<DocumentByName<EntsDataModel, Table>> | null>;
139
- 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> | null>;
140
- }
141
- interface PromisePaginationResult<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>>> {
142
- docs(): Promise<PaginationResult<DocumentByName<EntsDataModel, Table>>>;
143
- 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>>;
144
- }
145
- interface PromiseEntsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
146
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
147
- docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
148
- }
149
- interface PromiseEntsWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[] | null> {
150
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArrayOrNull<TOutput>;
151
- docs(): Promise<DocumentByName<EntsDataModel, Table>[] | null>;
152
- }
153
- interface PromiseEnts<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]> {
154
- map<TOutput>(callbackFn: (value: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArray<TOutput>;
155
- docs(): Promise<DocumentByName<EntsDataModel, Table>[]>;
156
- }
157
- interface PromiseEntsOrNulls<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<(Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel> | null)[]> {
158
- }
159
- interface PromiseEdgeOrderedEntsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsOrNull<EntsDataModel, Table> {
160
- /**
161
- * Paginate the ents on the other end of the edge.
162
- * Results are ordered by edge's `_creationTime`.
163
- */
164
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultOrNull<EntsDataModel, Table>;
165
- /**
166
- * Take the first `n` ents on the other end of the edge
167
- * ordered by edge's `_creationTime`.
168
- */
169
- take(n: number): PromiseEntsOrNull<EntsDataModel, Table>;
170
- /**
171
- * Returns the first ent on the other end of the edge
172
- * ordered by edge's `_creationTime`, or `null`.
173
- */
174
- first(): PromiseEntOrNull<EntsDataModel, Table>;
175
- /**
176
- * Returns the only ent on the other end of the edge,
177
- * `null` if there are none, or throws if there are more than one.
178
- */
179
- unique(): PromiseEntOrNull<EntsDataModel, Table>;
180
- }
181
- interface PromiseEdgeEntsOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEdgeOrderedEntsOrNull<EntsDataModel, Table> {
182
- /**
183
- * Returns whether there is an ent with given ID on the other side
184
- * the edge. Returns null if chained to a null result.
185
- * @param id The ID of the ent on the other end of the edge
186
- */
187
- has(id: GenericId<Table>): Promise<boolean | null>;
188
- /**
189
- * Query the ents on the other end of the edge
190
- * ordered by edge's `_creationTime`.
191
- */
192
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEntsOrNull<EntsDataModel, Table>;
193
- }
194
- interface PromiseEdgeOrderedEntsWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsWriterOrNull<EntsDataModel, Table> {
195
- /**
196
- * Paginate the ents on the other end of the edge.
197
- * Results are ordered by edge's `_creationTime`.
198
- */
199
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultWriterOrNull<EntsDataModel, Table>;
200
- /**
201
- * Take the first `n` ents on the other end of the edge
202
- * ordered by edge's `_creationTime`.
203
- */
204
- take(n: number): PromiseEntsWriterOrNull<EntsDataModel, Table>;
205
- /**
206
- * Returns the first ent on the other end of the edge
207
- * ordered by edge's `_creationTime`, or `null`.
208
- */
209
- first(): PromiseEntWriterOrNull<EntsDataModel, Table>;
210
- /**
211
- * Returns the only ent on the other end of the edge,
212
- * `null` if there are none, or throws if there are more than one.
213
- */
214
- unique(): PromiseEntWriterOrNull<EntsDataModel, Table>;
215
- }
216
- interface PromiseEdgeEntsWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEdgeOrderedEntsWriterOrNull<EntsDataModel, Table> {
217
- /**
218
- * Returns whether there is an ent with given ID on the other side
219
- * the edge. Returns null if chained to a null result.
220
- * @param id The ID of the ent on the other end of the edge
221
- */
222
- has(id: GenericId<Table>): Promise<boolean | null>;
223
- /**
224
- * Query the ents on the other end of the edge
225
- * ordered by edge's `_creationTime`.
226
- */
227
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEntsWriterOrNull<EntsDataModel, Table>;
228
- }
229
- interface PromiseEdgeOrderedEnts<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEnts<EntsDataModel, Table> {
230
- /**
231
- * Paginate the ents on the other end of the edge.
232
- * Results are ordered by edge's `_creationTime`.
233
- */
234
- paginate(paginationOpts: PaginationOptions): PromisePaginationResult<EntsDataModel, Table>;
235
- /**
236
- * Take the first `n` ents on the other end of the edge
237
- * ordered by edge's `_creationTime`.
238
- */
239
- take(n: number): PromiseEnts<EntsDataModel, Table>;
240
- /**
241
- * Returns the first ent on the other end of the edge
242
- * ordered by edge's `_creationTime`, or `null`.
243
- */
244
- first(): PromiseEntOrNull<EntsDataModel, Table>;
245
- /**
246
- * Returns the first ent on the other end of the edge
247
- * ordered by edge's `_creationTime`, or throws if there
248
- * are no ents on the other end of the edge.
249
- */
250
- firstX(): PromiseEnt<EntsDataModel, Table>;
251
- /**
252
- * Returns the only ent on the other end of the edge,
253
- * `null` if there are none, or throws if there are more than one.
254
- */
255
- unique(): PromiseEntOrNull<EntsDataModel, Table>;
256
- /**
257
- * Returns the only ent on the other end of the edge,
258
- * or throws if there are none or more than one.
259
- */
260
- uniqueX(): PromiseEnt<EntsDataModel, Table>;
261
- }
262
- interface PromiseEdgeEnts<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEdgeOrderedEnts<EntsDataModel, Table> {
263
- /**
264
- * Returns whether there is an ent with given ID on the other side
265
- * the edge.
266
- * @param id The ID of the ent on the other end of the edge
267
- */
268
- has(id: GenericId<Table>): Promise<boolean>;
269
- /**
270
- * Query the ents on the other end of the edge
271
- * ordered by edge's `_creationTime`.
272
- */
273
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEnts<EntsDataModel, Table>;
274
- }
275
- interface PromiseEdgeOrderedEntsWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEntsWriter<EntsDataModel, Table> {
276
- /**
277
- * Paginate the ents on the other end of the edge.
278
- * Results are ordered by edge's `_creationTime`.
279
- */
280
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultWriter<EntsDataModel, Table>;
281
- /**
282
- * Take the first `n` ents on the other end of the edge
283
- * ordered by edge's `_creationTime`.
284
- */
285
- take(n: number): PromiseEntsWriter<EntsDataModel, Table>;
286
- /**
287
- * Returns the first ent on the other end of the edge
288
- * ordered by edge's `_creationTime`, or `null`.
289
- */
290
- first(): PromiseEntWriterOrNull<EntsDataModel, Table>;
291
- /**
292
- * Returns the first ent on the other end of the edge
293
- * ordered by edge's `_creationTime`, or throws if there
294
- * are no ents on the other end of the edge.
295
- */
296
- firstX(): PromiseEntWriter<EntsDataModel, Table>;
297
- /**
298
- * Returns the only ent on the other end of the edge,
299
- * `null` if there are none, or throws if there are more than one.
300
- */
301
- unique(): PromiseEntWriterOrNull<EntsDataModel, Table>;
302
- /**
303
- * Returns the only ent on the other end of the edge,
304
- * or throws if there are none or more than one.
305
- */
306
- uniqueX(): PromiseEntWriter<EntsDataModel, Table>;
307
- }
308
- interface PromiseEdgeEntsWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEdgeOrderedEntsWriter<EntsDataModel, Table> {
309
- /**
310
- * Returns whether there is an ent with given ID on the other side
311
- * the edge.
312
- * @param id The ID of the ent on the other end of the edge
313
- */
314
- has(id: GenericId<Table>): Promise<boolean>;
315
- /**
316
- * Query the ents on the other end of the edge
317
- * ordered by edge's `_creationTime`.
318
- */
319
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseEdgeOrderedEntsWriter<EntsDataModel, Table>;
320
- }
321
- interface PromiseEntOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel> | null> {
322
- edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeOrNull<EntsDataModel, Table, Edge>;
323
- doc(): Promise<DocumentByName<EntsDataModel, Table> | null>;
324
- }
325
- interface PromiseEnt<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>> {
326
- edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdge<EntsDataModel, Table, Edge>;
327
- edgeX<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeOrThrow<EntsDataModel, Table, Edge>;
328
- doc(): Promise<DocumentByName<EntsDataModel, Table>>;
329
- }
330
- interface PromiseArrayOrNull<T> extends Promise<T[] | null> {
331
- filter<S extends T>(predicate: (value: T, index: number, array: T[] | null) => value is S): Promise<S[] | null>;
332
- filter(predicate: (value: T, index: number, array: T[] | null) => unknown): Promise<T[] | null>;
333
- }
334
- interface PromiseArray<T> extends Promise<T[]> {
335
- filter<S extends T>(predicate: (value: T, index: number, array: T[]) => value is S): Promise<S[]>;
336
- filter(predicate: (value: T, index: number, array: T[]) => unknown): Promise<T[]>;
337
- }
338
- declare function entWrapper<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(fields: DocumentByName<EntsDataModel, Table>, ctx: EntQueryCtx<EntsDataModel>, entDefinitions: EntsDataModel, table: Table): Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>;
339
- declare function entsTableFactory<Ctx extends EntQueryCtx<any>, EntsDataModel extends GenericEntsDataModel>(ctx: Ctx, entDefinitions: EntsDataModel, options?: {
340
- scheduledDelete?: ScheduledDeleteFuncRef;
341
- }): Ctx extends EntMutationCtx<any> ? EntsTableWriter<EntsDataModel> : EntsTable<EntsDataModel>;
342
- type EntsTableReader<EntsDataModel extends GenericEntsDataModel> = {
343
- <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): PromiseQuery<EntsDataModel, Table>;
344
- <Table extends TableNamesInDataModel<EntsDataModel>>(table: Table): PromiseTable<EntsDataModel, Table>;
345
- };
346
- type EntsTable<EntsDataModel extends GenericEntsDataModel> = EntsTableReader<EntsDataModel> & {
347
- system: EntsTableReader<EntsSystemDataModel>;
348
- };
349
- type EntsTableWriter<EntsDataModel extends GenericEntsDataModel> = {
350
- <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>;
351
- <Table extends TableNamesInDataModel<EntsDataModel>>(table: Table): PromiseTableWriter<Table, EntsDataModel>;
352
- system: EntsTableReader<EntsSystemDataModel>;
353
- };
354
- declare class EntInstance<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> {
355
- edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdge<EntsDataModel, Table, Edge>;
356
- edgeX<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeOrThrow<EntsDataModel, Table, Edge>;
357
- doc(): DocumentByName<EntsDataModel, Table>;
358
- }
359
- type Ent<Table extends TableNamesInDataModel<EntsDataModel>, Doc extends DocumentByName<EntsDataModel, Table>, EntsDataModel extends GenericEntsDataModel> = Doc & EntInstance<EntsDataModel, Table>;
360
- type GenericEnt<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> = Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>;
361
- type PromiseEdge<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, PromiseEdgeEnts<EntsDataModel, ToTable>, PromiseQuery<EntsDataModel, ToTable>, ToTable extends "_storage" | "_scheduled_functions" ? PromiseEntOrNull<EntsSystemDataModel, ToTable> : PromiseEntOrNull<EntsDataModel, ToTable>, ToTable extends "_storage" ? PromiseEnt<EntsSystemDataModel, ToTable> : ToTable extends "_scheduled_functions" ? PromiseEntOrNull<EntsSystemDataModel, ToTable> : PromiseEnt<EntsDataModel, ToTable>>;
362
- type PromiseEdgeOrThrow<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, PromiseEdgeEnts<EntsDataModel, ToTable>, PromiseQuery<EntsDataModel, ToTable>, PromiseEnt<EntsDataModel, ToTable>, PromiseEnt<EntsDataModel, ToTable>>;
363
- type PromiseEdgeOrNull<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, PromiseEdgeEntsOrNull<EntsDataModel, ToTable>, PromiseQueryOrNull<EntsDataModel, ToTable>, PromiseEntOrNull<EntsDataModel, ToTable>, PromiseEntOrNull<EntsDataModel, ToTable>>;
364
- type PromiseEdgeWriter<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>, PromiseEntWriterOrNull<EntsDataModel, ToTable>, PromiseEntWriter<EntsDataModel, ToTable>>;
365
- 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>>;
366
- 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>>;
367
- interface PromiseOrderedQueryWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]>, PromiseOrderedQueryBase<EntsDataModel, Table> {
368
- paginate(paginationOpts: PaginationOptions): PromisePaginationResultWriter<EntsDataModel, Table>;
369
- map<TOutput>(callbackFn: (value: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): PromiseArray<TOutput>;
370
- take(n: number): PromiseEntsWriter<EntsDataModel, Table>;
371
- first(): PromiseEntWriterOrNull<EntsDataModel, Table>;
372
- firstX(): PromiseEntWriter<EntsDataModel, Table>;
373
- unique(): PromiseEntWriterOrNull<EntsDataModel, Table>;
374
- uniqueX(): PromiseEntWriter<EntsDataModel, Table>;
375
- }
376
- interface PromiseQueryWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseOrderedQueryWriter<EntsDataModel, Table> {
377
- order(order: "asc" | "desc"): PromiseOrderedQueryWriter<EntsDataModel, Table>;
378
- }
379
- interface PromiseEntsWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends PromiseEnts<EntsDataModel, Table> {
380
- firstX(): PromiseEntWriter<EntsDataModel, Table>;
381
- uniqueX(): PromiseEntWriter<EntsDataModel, Table>;
382
- }
383
- interface PromisePaginationResultWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>> | null> {
384
- docs(): Promise<PaginationResult<DocumentByName<EntsDataModel, Table>> | null>;
385
- map<TOutput>(callbackFn: (value: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): Promise<PaginationResult<TOutput> | null>;
386
- }
387
- interface PromisePaginationResultWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<PaginationResult<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>>> {
388
- docs(): Promise<PaginationResult<DocumentByName<EntsDataModel, Table>>>;
389
- map<TOutput>(callbackFn: (value: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>, index: number, array: EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>[]) => Promise<TOutput> | TOutput): Promise<PaginationResult<TOutput>>;
390
- }
391
- interface PromiseTableWriter<Table extends TableNamesInDataModel<EntsDataModel>, EntsDataModel extends GenericEntsDataModel> extends PromiseQueryWriter<EntsDataModel, Table>, PromiseTableBase<EntsDataModel, Table> {
392
- get<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, ...values: IndexFieldTypesForEq<EntsDataModel, Table, Indexes[Index]>): PromiseEntWriterOrNull<EntsDataModel, Table>;
393
- get(id: GenericId<Table>): PromiseEntWriterOrNull<EntsDataModel, Table>;
394
- /**
395
- * Fetch a unique document from the DB using given index, throw if it doesn't exist.
396
- */
397
- getX<Indexes extends EntsDataModel[Table]["indexes"], Index extends keyof Indexes>(indexName: Index, ...values: IndexFieldTypesForEq<EntsDataModel, Table, Indexes[Index]>): PromiseEntWriter<EntsDataModel, Table>;
398
- /**
399
- * Fetch a document from the DB for a given ID, throw if it doesn't exist.
400
- */
401
- getX(id: GenericId<Table>): PromiseEntWriter<EntsDataModel, Table>;
402
- /**
403
- * Return all documents in the table in given order.
404
- * Sort either by given index or by _creationTime.
405
- */
406
- order(order: "asc" | "desc", indexName?: IndexNames<NamedTableInfo<EntsDataModel, Table>>): PromiseOrderedQueryWriter<EntsDataModel, Table>;
407
- /**
408
- * Query by running a full text search against a search index.
409
- *
410
- * Search queries must always search for some text within the index's
411
- * `searchField`. This query can optionally add equality filters for any
412
- * `filterFields` specified in the index.
413
- *
414
- * Documents will be returned in relevance order based on how well they
415
- * match the search text.
416
- *
417
- * To learn about full text search, see [Indexes](https://docs.convex.dev/text-search).
418
- *
419
- * @param indexName - The name of the search index to query.
420
- * @param searchFilter - A search filter expression constructed with the
421
- * supplied {@link SearchFilterBuilder}. This defines the full text search to run
422
- * along with equality filtering to run within the search index.
423
- * @returns - A query that searches for matching documents, returning them
424
- * in relevancy order.
425
- */
426
- search<IndexName extends SearchIndexNames<NamedTableInfo<EntsDataModel, Table>>>(indexName: IndexName, searchFilter: (q: SearchFilterBuilder<DocumentByName<EntsDataModel, Table>, NamedSearchIndex<NamedTableInfo<EntsDataModel, Table>, IndexName>>) => SearchFilter): PromiseOrderedQueryWriter<EntsDataModel, Table>;
427
- /**
428
- * Insert a new document into a table.
429
- *
430
- * @param table - The name of the table to insert a new document into.
431
- * @param value - The {@link Value} to insert into the given table.
432
- * @returns - {@link GenericId} of the new document.
433
- */
434
- insert(value: Expand<WithoutSystemFields<WithEdgeInserts<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>>): PromiseEntId<EntsDataModel, Table>;
435
- /**
436
- * Insert new documents into a table.
437
- *
438
- * @param table - The name of the table to insert a new document into.
439
- * @param value - The {@link Value} to insert into the given table.
440
- * @returns - {@link GenericId} of the new document.
441
- */
442
- insertMany(values: Expand<WithoutSystemFields<WithEdgeInserts<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>>[]): Promise<GenericId<Table>[]>;
443
- }
444
- interface PromiseEntWriterOrNull<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel> | null> {
445
- edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeWriterOrNull<EntsDataModel, Table, Edge>;
446
- doc(): Promise<DocumentByName<EntsDataModel, Table> | null>;
447
- }
448
- interface PromiseEntWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>> {
449
- edge<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeWriter<EntsDataModel, Table, Edge>;
450
- edgeX<Edge extends keyof EntsDataModel[Table]["edges"]>(edge: Edge): PromiseEdgeWriterOrThrow<EntsDataModel, Table, Edge>;
451
- doc(): Promise<DocumentByName<EntsDataModel, Table>>;
452
- /**
453
- * Patch this existing document, shallow merging it with the given partial
454
- * document.
455
- *
456
- * New fields are added. Existing fields are overwritten. Fields set to
457
- * `undefined` are removed.
458
- *
459
- * @param value - The partial {@link GenericDocument} to merge into this document. If this new value
460
- * specifies system fields like `_id`, they must match the document's existing field values.
461
- */
462
- patch(value: Partial<Expand<WithEdgePatches<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>>): PromiseEntId<EntsDataModel, Table>;
463
- /**
464
- * Replace the value of an existing document, overwriting its old value.
465
- *
466
- * @param value - The new {@link GenericDocument} for the document. This value can omit the system fields,
467
- * and the database will preserve them in.
468
- */
469
- replace(value: Expand<WithOptionalSystemFields<WithEdges<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>>): PromiseEntId<EntsDataModel, Table>;
470
- /**
471
- * Delete this existing document.
472
- *
473
- * @param id - The {@link GenericId} of the document to remove.
474
- */
475
- delete(): Promise<GenericId<Table>>;
476
- }
477
- declare class EntWriterInstance<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends EntInstance<EntsDataModel, Table> {
478
- /**
479
- * Patch this existing document, shallow merging it with the given partial
480
- * document.
481
- *
482
- * New fields are added. Existing fields are overwritten. Fields set to
483
- * `undefined` are removed.
484
- *
485
- * @param value - The partial {@link GenericDocument} to merge into this document. If this new value
486
- * specifies system fields like `_id`, they must match the document's existing field values.
487
- */
488
- patch(value: Partial<WithEdgePatches<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>): PromiseEntId<EntsDataModel, Table>;
489
- /**
490
- * Replace the value of this existing document, overwriting its old value.
491
- *
492
- * @param value - The new {@link GenericDocument} for the document. This value can omit the system fields,
493
- * and the database will preserve them in.
494
- */
495
- replace(value: WithOptionalSystemFields<WithEdges<DocumentByName<EntsDataModel, Table>, EntsDataModel[Table]["edges"]>>): PromiseEntId<EntsDataModel, Table>;
496
- /**
497
- * Delete this existing document.
498
- *
499
- * @param id - The {@link GenericId} of the document to remove.
500
- */
501
- delete(): Promise<GenericId<Table>>;
502
- }
503
- type EntWriter<Table extends TableNamesInDataModel<EntsDataModel>, Doc extends DocumentByName<EntsDataModel, Table>, EntsDataModel extends GenericEntsDataModel> = Doc & EntWriterInstance<EntsDataModel, Table>;
504
- type GenericEntWriter<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> = EntWriter<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>;
505
- interface PromiseEntId<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>> extends Promise<GenericId<Table>> {
506
- get(): PromiseEntWriter<EntsDataModel, Table>;
507
- }
508
- interface EntQueryCtx<DataModel extends GenericDataModel> {
509
- db: GenericDatabaseReader<DataModel>;
510
- vectorSearch?: undefined;
511
- }
512
- interface EntMutationCtx<DataModel extends GenericDataModel> extends EntQueryCtx<DataModel> {
513
- db: GenericDatabaseWriter<DataModel>;
514
- storage: StorageWriter;
515
- scheduler: Scheduler;
516
- }
517
- type DocRetriever<ID, Doc> = () => Promise<{
518
- id: ID;
519
- doc: () => Promise<Doc>;
520
- }>;
521
- declare function addEntRules<EntsDataModel extends GenericEntsDataModel>(entDefinitions: EntsDataModel, rules: {
522
- [Table in keyof EntsDataModel]?: Table extends TableNamesInDataModel<EntsDataModel> ? {
523
- read?: (ent: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>) => Promise<boolean>;
524
- write?: (args: {
525
- operation: "create";
526
- ent: undefined;
527
- value: WithoutSystemFields<DocumentByName<EntsDataModel, Table>>;
528
- } | {
529
- operation: "update";
530
- ent: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>;
531
- value: Partial<WithoutSystemFields<DocumentByName<EntsDataModel, Table>>>;
532
- } | {
533
- operation: "delete";
534
- ent: Ent<Table, DocumentByName<EntsDataModel, Table>, EntsDataModel>;
535
- value: undefined;
536
- }) => Promise<boolean>;
537
- } : never;
538
- }): EntsDataModel;
539
- declare function getReadRule(entDefinitions: GenericEntsDataModel, table: string): ((doc: GenericDocument) => Promise<boolean>) | undefined;
540
- declare function getWriteRule(entDefinitions: GenericEntsDataModel, table: string): ((args: {
541
- operation: "create";
542
- ent: undefined;
543
- value: {
544
- [x: string]: convex_values.Value;
545
- };
546
- } | {
547
- operation: "update";
548
- ent: Ent<any, GenericDocument, any>;
549
- value: Partial<{
550
- [x: string]: convex_values.Value;
551
- }>;
552
- } | {
553
- operation: "delete";
554
- ent: Ent<any, GenericDocument, any>;
555
- value: undefined;
556
- }) => Promise<boolean>) | undefined;
557
- declare function getDeletionConfig<EntsDataModel extends GenericEntsDataModel, Table extends TableNamesInDataModel<EntsDataModel>>(entDefinitions: EntsDataModel, table: Table): DeletionConfig | undefined;
558
-
559
- export { type PromiseEntId as $, type PromiseEntOrNull as A, type PromiseEnt as B, type PromiseArrayOrNull as C, type PromiseArray as D, type EdgeChanges as E, entWrapper as F, entsTableFactory as G, type EntsTable as H, type EntsTableWriter as I, type Ent as J, type GenericEnt as K, type PromiseEdge as L, type PromiseEdgeOrThrow as M, type PromiseEdgeWriter as N, type PromiseEdgeWriterOrThrow as O, type PromiseOrderedQueryOrNull as P, type PromiseEdgeWriterOrNull as Q, type PromiseOrderedQueryWriter as R, type PromiseQueryWriter as S, type PromiseEntsWriter as T, type PromisePaginationResultWriterOrNull as U, type PromisePaginationResultWriter as V, WriterImplBase as W, type PromiseTableWriter as X, type PromiseEntWriterOrNull as Y, type PromiseEntWriter as Z, type GenericEntWriter as _, type WithEdgeInserts 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 WithEdges as b, type WithEdgePatches as c, type PromiseOrderedQueryWriterOrNull as d, type PromiseQueryOrNull as e, type PromiseQueryWriterOrNull as f, type PromiseTableBase as g, type PromiseTable as h, isSystemTable as i, type PromiseOrderedQueryBase as j, type PromiseOrderedQuery as k, type PromiseQuery as l, type PromisePaginationResultOrNull as m, type PromisePaginationResult as n, type PromiseEntsOrNull as o, type PromiseEntsWriterOrNull as p, type PromiseEnts as q, type PromiseEntsOrNulls as r, type PromiseEdgeOrderedEntsOrNull as s, type PromiseEdgeEntsOrNull as t, type PromiseEdgeOrderedEntsWriterOrNull as u, type PromiseEdgeEntsWriterOrNull as v, type PromiseEdgeOrderedEnts as w, type PromiseEdgeEnts as x, type PromiseEdgeOrderedEntsWriter as y, type PromiseEdgeEntsWriter as z };