ultimabase 0.0.0-stage → 0.1.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/CHANGELOG.md +7 -0
- package/README.md +4 -2
- package/dist/access.d.ts +62 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +258 -0
- package/dist/adapter-errors.d.ts +43 -0
- package/dist/adapter-errors.d.ts.map +1 -0
- package/dist/adapter-errors.js +72 -0
- package/dist/adapter-json.d.ts +20 -0
- package/dist/adapter-json.d.ts.map +1 -0
- package/dist/adapter-json.js +2 -0
- package/dist/adapter-migrations.d.ts +90 -0
- package/dist/adapter-migrations.d.ts.map +1 -0
- package/dist/adapter-migrations.js +1 -0
- package/dist/adapter.d.ts +333 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +5 -0
- package/dist/aggregate.d.ts +31 -0
- package/dist/aggregate.d.ts.map +1 -0
- package/dist/aggregate.js +99 -0
- package/dist/app-internals.d.ts +10 -0
- package/dist/app-internals.d.ts.map +1 -0
- package/dist/app-internals.js +12 -0
- package/dist/app-options.d.ts +22 -0
- package/dist/app-options.d.ts.map +1 -0
- package/dist/app-options.js +3 -0
- package/dist/cascade.d.ts +47 -0
- package/dist/cascade.d.ts.map +1 -0
- package/dist/cascade.js +209 -0
- package/dist/cli-config.d.ts +6 -0
- package/dist/cli-config.d.ts.map +1 -0
- package/dist/cli-config.js +45 -0
- package/dist/cli-deploy.d.ts +14 -0
- package/dist/cli-deploy.d.ts.map +1 -0
- package/dist/cli-deploy.js +193 -0
- package/dist/cli-main.d.ts +16 -0
- package/dist/cli-main.d.ts.map +1 -0
- package/dist/cli-main.js +151 -0
- package/dist/cli-migrate.d.ts +20 -0
- package/dist/cli-migrate.d.ts.map +1 -0
- package/dist/cli-migrate.js +105 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/complete.d.ts +13 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +60 -0
- package/dist/console-logger.d.ts +3 -0
- package/dist/console-logger.d.ts.map +1 -0
- package/dist/console-logger.js +62 -0
- package/dist/create-many.d.ts +7 -0
- package/dist/create-many.d.ts.map +1 -0
- package/dist/create-many.js +88 -0
- package/dist/decimal.d.ts +23 -0
- package/dist/decimal.d.ts.map +1 -0
- package/dist/decimal.js +50 -0
- package/dist/define-app.d.ts +59 -0
- package/dist/define-app.d.ts.map +1 -0
- package/dist/define-app.js +5 -0
- package/dist/define-enum.d.ts +6 -0
- package/dist/define-enum.d.ts.map +1 -0
- package/dist/define-enum.js +18 -0
- package/dist/define-function.d.ts +25 -0
- package/dist/define-function.d.ts.map +1 -0
- package/dist/define-function.js +111 -0
- package/dist/define-model.d.ts +48 -0
- package/dist/define-model.d.ts.map +1 -0
- package/dist/define-model.js +85 -0
- package/dist/definition.d.ts +179 -0
- package/dist/definition.d.ts.map +1 -0
- package/dist/definition.js +165 -0
- package/dist/delete-many.d.ts +13 -0
- package/dist/delete-many.d.ts.map +1 -0
- package/dist/delete-many.js +58 -0
- package/dist/engine.d.ts +16 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +174 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +43 -0
- package/dist/exact.d.ts +20 -0
- package/dist/exact.d.ts.map +1 -0
- package/dist/exact.js +1 -0
- package/dist/feed.d.ts +6 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +33 -0
- package/dist/field-codec.d.ts +11 -0
- package/dist/field-codec.d.ts.map +1 -0
- package/dist/field-codec.js +48 -0
- package/dist/field-rules.d.ts +57 -0
- package/dist/field-rules.d.ts.map +1 -0
- package/dist/field-rules.js +1 -0
- package/dist/field-type.d.ts +51 -0
- package/dist/field-type.d.ts.map +1 -0
- package/dist/field-type.js +106 -0
- package/dist/fields.d.ts +295 -0
- package/dist/fields.d.ts.map +1 -0
- package/dist/fields.js +1 -0
- package/dist/function.d.ts +126 -0
- package/dist/function.d.ts.map +1 -0
- package/dist/function.js +1 -0
- package/dist/functions.d.ts +18 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +99 -0
- package/dist/group-by.d.ts +10 -0
- package/dist/group-by.d.ts.map +1 -0
- package/dist/group-by.js +145 -0
- package/dist/group-having.d.ts +8 -0
- package/dist/group-having.d.ts.map +1 -0
- package/dist/group-having.js +97 -0
- package/dist/hooks.d.ts +41 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +149 -0
- package/dist/hosts.d.ts +3 -0
- package/dist/hosts.d.ts.map +1 -0
- package/dist/hosts.js +8 -0
- package/dist/identify.d.ts +15 -0
- package/dist/identify.d.ts.map +1 -0
- package/dist/identify.js +71 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/internal.d.ts +28 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +39 -0
- package/dist/lifecycle.d.ts +21 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +149 -0
- package/dist/list-update.d.ts +12 -0
- package/dist/list-update.d.ts.map +1 -0
- package/dist/list-update.js +52 -0
- package/dist/live.d.ts +37 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +139 -0
- package/dist/manifest.d.ts +11 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +60 -0
- package/dist/memory-aggregate.d.ts +7 -0
- package/dist/memory-aggregate.d.ts.map +1 -0
- package/dist/memory-aggregate.js +107 -0
- package/dist/memory-conditions.d.ts +8 -0
- package/dist/memory-conditions.d.ts.map +1 -0
- package/dist/memory-conditions.js +82 -0
- package/dist/memory-draft.d.ts +34 -0
- package/dist/memory-draft.d.ts.map +1 -0
- package/dist/memory-draft.js +255 -0
- package/dist/memory-json.d.ts +6 -0
- package/dist/memory-json.d.ts.map +1 -0
- package/dist/memory-json.js +86 -0
- package/dist/memory-read.d.ts +45 -0
- package/dist/memory-read.d.ts.map +1 -0
- package/dist/memory-read.js +244 -0
- package/dist/memory-search.d.ts +16 -0
- package/dist/memory-search.d.ts.map +1 -0
- package/dist/memory-search.js +110 -0
- package/dist/memory-values.d.ts +23 -0
- package/dist/memory-values.d.ts.map +1 -0
- package/dist/memory-values.js +82 -0
- package/dist/memory.d.ts +4 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +157 -0
- package/dist/migrate.d.ts +22 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +131 -0
- package/dist/model.d.ts +239 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +1 -0
- package/dist/nested-write.d.ts +64 -0
- package/dist/nested-write.d.ts.map +1 -0
- package/dist/nested-write.js +274 -0
- package/dist/number-update.d.ts +18 -0
- package/dist/number-update.d.ts.map +1 -0
- package/dist/number-update.js +96 -0
- package/dist/plugin-app.d.ts +48 -0
- package/dist/plugin-app.d.ts.map +1 -0
- package/dist/plugin-app.js +230 -0
- package/dist/plugin-code.d.ts +17 -0
- package/dist/plugin-code.d.ts.map +1 -0
- package/dist/plugin-code.js +125 -0
- package/dist/plugin-use.d.ts +22 -0
- package/dist/plugin-use.d.ts.map +1 -0
- package/dist/plugin-use.js +161 -0
- package/dist/plugin.d.ts +357 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +17 -0
- package/dist/query-aggregate.d.ts +82 -0
- package/dist/query-aggregate.d.ts.map +1 -0
- package/dist/query-aggregate.js +1 -0
- package/dist/query-args.d.ts +41 -0
- package/dist/query-args.d.ts.map +1 -0
- package/dist/query-args.js +263 -0
- package/dist/query-bulk.d.ts +35 -0
- package/dist/query-bulk.d.ts.map +1 -0
- package/dist/query-bulk.js +1 -0
- package/dist/query-conditions.d.ts +9 -0
- package/dist/query-conditions.d.ts.map +1 -0
- package/dist/query-conditions.js +46 -0
- package/dist/query-context.d.ts +32 -0
- package/dist/query-context.d.ts.map +1 -0
- package/dist/query-context.js +55 -0
- package/dist/query-filter.d.ts +46 -0
- package/dist/query-filter.d.ts.map +1 -0
- package/dist/query-filter.js +1 -0
- package/dist/query-group.d.ts +82 -0
- package/dist/query-group.d.ts.map +1 -0
- package/dist/query-group.js +1 -0
- package/dist/query-json.d.ts +9 -0
- package/dist/query-json.d.ts.map +1 -0
- package/dist/query-json.js +66 -0
- package/dist/query-order.d.ts +15 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +115 -0
- package/dist/query-project.d.ts +15 -0
- package/dist/query-project.d.ts.map +1 -0
- package/dist/query-project.js +45 -0
- package/dist/query-search.d.ts +24 -0
- package/dist/query-search.d.ts.map +1 -0
- package/dist/query-search.js +2 -0
- package/dist/query-values.d.ts +28 -0
- package/dist/query-values.d.ts.map +1 -0
- package/dist/query-values.js +91 -0
- package/dist/query-where.d.ts +46 -0
- package/dist/query-where.d.ts.map +1 -0
- package/dist/query-where.js +200 -0
- package/dist/query-write.d.ts +14 -0
- package/dist/query-write.d.ts.map +1 -0
- package/dist/query-write.js +260 -0
- package/dist/query.d.ts +254 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +1 -0
- package/dist/record.d.ts +257 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +1 -0
- package/dist/recorder.d.ts +32 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +152 -0
- package/dist/relation-write.d.ts +41 -0
- package/dist/relation-write.d.ts.map +1 -0
- package/dist/relation-write.js +112 -0
- package/dist/relations.d.ts +42 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +119 -0
- package/dist/rules.d.ts +97 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +71 -0
- package/dist/running.d.ts +29 -0
- package/dist/running.d.ts.map +1 -0
- package/dist/running.js +39 -0
- package/dist/schema-indexes.d.ts +11 -0
- package/dist/schema-indexes.d.ts.map +1 -0
- package/dist/schema-indexes.js +59 -0
- package/dist/schema-virtuals.d.ts +19 -0
- package/dist/schema-virtuals.d.ts.map +1 -0
- package/dist/schema-virtuals.js +100 -0
- package/dist/schema.d.ts +35 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +267 -0
- package/dist/scope.d.ts +46 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +82 -0
- package/dist/scratch.d.ts +14 -0
- package/dist/scratch.d.ts.map +1 -0
- package/dist/scratch.js +10 -0
- package/dist/serve.d.ts +2 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +4 -0
- package/dist/symbols.d.ts +10 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/symbols.js +1 -0
- package/dist/transaction.d.ts +28 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +156 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/update-many.d.ts +7 -0
- package/dist/update-many.d.ts.map +1 -0
- package/dist/update-many.js +182 -0
- package/dist/uuid.d.ts +7 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +48 -0
- package/dist/validation.d.ts +24 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +72 -0
- package/dist/virtual-read.d.ts +9 -0
- package/dist/virtual-read.d.ts.map +1 -0
- package/dist/virtual-read.js +145 -0
- package/dist/virtual.d.ts +142 -0
- package/dist/virtual.d.ts.map +1 -0
- package/dist/virtual.js +1 -0
- package/dist/write-context.d.ts +46 -0
- package/dist/write-context.d.ts.map +1 -0
- package/dist/write-context.js +102 -0
- package/dist/write-data.d.ts +26 -0
- package/dist/write-data.d.ts.map +1 -0
- package/dist/write-data.js +144 -0
- package/dist/write-plan.d.ts +107 -0
- package/dist/write-plan.d.ts.map +1 -0
- package/dist/write-plan.js +170 -0
- package/dist/write-target.d.ts +17 -0
- package/dist/write-target.d.ts.map +1 -0
- package/dist/write-target.js +59 -0
- package/dist/writes.d.ts +23 -0
- package/dist/writes.d.ts.map +1 -0
- package/dist/writes.js +246 -0
- package/dist/writing.d.ts +10 -0
- package/dist/writing.d.ts.map +1 -0
- package/dist/writing.js +66 -0
- package/package.json +42 -3
- package/src/access.ts +329 -0
- package/src/adapter-errors.ts +89 -0
- package/src/adapter-json.ts +21 -0
- package/src/adapter-migrations.ts +98 -0
- package/src/adapter.ts +363 -0
- package/src/aggregate.ts +136 -0
- package/src/app-internals.ts +26 -0
- package/src/app-options.ts +24 -0
- package/src/cascade.ts +297 -0
- package/src/cli-config.ts +45 -0
- package/src/cli-deploy.ts +235 -0
- package/src/cli-main.ts +165 -0
- package/src/cli-migrate.ts +143 -0
- package/src/cli.ts +5 -0
- package/src/complete.ts +73 -0
- package/src/console-logger.ts +87 -0
- package/src/create-many.ts +126 -0
- package/src/decimal.ts +74 -0
- package/src/define-app.ts +108 -0
- package/src/define-enum.ts +26 -0
- package/src/define-function.ts +188 -0
- package/src/define-model.ts +220 -0
- package/src/definition.ts +352 -0
- package/src/delete-many.ts +76 -0
- package/src/engine.ts +281 -0
- package/src/errors.ts +97 -0
- package/src/exact.ts +49 -0
- package/src/feed.ts +39 -0
- package/src/field-codec.ts +72 -0
- package/src/field-rules.ts +77 -0
- package/src/field-type.ts +219 -0
- package/src/fields.ts +383 -0
- package/src/function.ts +143 -0
- package/src/functions.ts +154 -0
- package/src/group-by.ts +186 -0
- package/src/group-having.ts +143 -0
- package/src/hooks.ts +215 -0
- package/src/hosts.ts +11 -0
- package/src/identify.ts +95 -0
- package/src/index.ts +125 -0
- package/src/internal.ts +68 -0
- package/src/lifecycle.ts +214 -0
- package/src/list-update.ts +71 -0
- package/src/live.ts +199 -0
- package/src/manifest.ts +71 -0
- package/src/memory-aggregate.ts +162 -0
- package/src/memory-conditions.ts +88 -0
- package/src/memory-draft.ts +319 -0
- package/src/memory-json.ts +91 -0
- package/src/memory-read.ts +311 -0
- package/src/memory-search.ts +149 -0
- package/src/memory-values.ts +106 -0
- package/src/memory.ts +173 -0
- package/src/migrate.ts +152 -0
- package/src/model.ts +312 -0
- package/src/nested-write.ts +390 -0
- package/src/number-update.ts +142 -0
- package/src/plugin-app.ts +308 -0
- package/src/plugin-code.ts +158 -0
- package/src/plugin-use.ts +217 -0
- package/src/plugin.ts +400 -0
- package/src/query-aggregate.ts +96 -0
- package/src/query-args.ts +375 -0
- package/src/query-bulk.ts +53 -0
- package/src/query-conditions.ts +53 -0
- package/src/query-context.ts +104 -0
- package/src/query-filter.ts +54 -0
- package/src/query-group.ts +137 -0
- package/src/query-json.ts +90 -0
- package/src/query-order.ts +158 -0
- package/src/query-project.ts +73 -0
- package/src/query-search.ts +31 -0
- package/src/query-values.ts +131 -0
- package/src/query-where.ts +318 -0
- package/src/query-write.ts +360 -0
- package/src/query.ts +400 -0
- package/src/record.ts +379 -0
- package/src/recorder.ts +212 -0
- package/src/relation-write.ts +176 -0
- package/src/relations.ts +165 -0
- package/src/rules.ts +188 -0
- package/src/running.ts +62 -0
- package/src/schema-indexes.ts +88 -0
- package/src/schema-virtuals.ts +134 -0
- package/src/schema.ts +367 -0
- package/src/scope.ts +123 -0
- package/src/scratch.ts +28 -0
- package/src/serve.ts +5 -0
- package/src/symbols.ts +11 -0
- package/src/transaction.ts +211 -0
- package/src/types.ts +79 -0
- package/src/update-many.ts +268 -0
- package/src/uuid.ts +51 -0
- package/src/validation.ts +107 -0
- package/src/virtual-read.ts +198 -0
- package/src/virtual.ts +187 -0
- package/src/write-context.ts +170 -0
- package/src/write-data.ts +188 -0
- package/src/write-plan.ts +273 -0
- package/src/write-target.ts +92 -0
- package/src/writes.ts +361 -0
- package/src/writing.ts +93 -0
package/src/query.ts
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
// Query arguments and results, in Prisma Client's form (D-20).
|
|
2
|
+
import type {
|
|
3
|
+
CreateData,
|
|
4
|
+
RecordOf,
|
|
5
|
+
RelationKeys,
|
|
6
|
+
ScalarKeys,
|
|
7
|
+
StoredValue,
|
|
8
|
+
SystemFields,
|
|
9
|
+
TargetFields,
|
|
10
|
+
UniqueKeys,
|
|
11
|
+
UpdateData,
|
|
12
|
+
} from './record.ts'
|
|
13
|
+
import type { Exact } from './exact.ts'
|
|
14
|
+
import type { JsonValue } from './fields.ts'
|
|
15
|
+
import type { AggregateArgs, Aggregates, IsOrdered } from './query-aggregate.ts'
|
|
16
|
+
import type { BulkQueries } from './query-bulk.ts'
|
|
17
|
+
import type {
|
|
18
|
+
JsonPathFilter,
|
|
19
|
+
ListFilter,
|
|
20
|
+
ScalarFilter,
|
|
21
|
+
} from './query-filter.ts'
|
|
22
|
+
import type { Relevance, SearchWhere } from './query-search.ts'
|
|
23
|
+
import type {
|
|
24
|
+
GroupByArgs,
|
|
25
|
+
GroupChecked,
|
|
26
|
+
GroupField,
|
|
27
|
+
Groups,
|
|
28
|
+
SortOrder,
|
|
29
|
+
} from './query-group.ts'
|
|
30
|
+
import type { Identity } from './rules.ts'
|
|
31
|
+
import type { fieldType } from './symbols.ts'
|
|
32
|
+
import type {
|
|
33
|
+
DefaultRow,
|
|
34
|
+
DefaultVirtualKeys,
|
|
35
|
+
VirtualArgs,
|
|
36
|
+
VirtualIncludes,
|
|
37
|
+
VirtualKeys,
|
|
38
|
+
VirtualOutput,
|
|
39
|
+
} from './virtual.ts'
|
|
40
|
+
|
|
41
|
+
type KindOf<X> = X extends { readonly [fieldType]: { readonly kind: infer K } }
|
|
42
|
+
? K
|
|
43
|
+
: never
|
|
44
|
+
type TargetOf<X> = X extends {
|
|
45
|
+
readonly [fieldType]: { readonly target: infer T }
|
|
46
|
+
}
|
|
47
|
+
? T
|
|
48
|
+
: never
|
|
49
|
+
type OptionalOne<X> = X extends {
|
|
50
|
+
readonly [fieldType]: { readonly options: { readonly optional: true } }
|
|
51
|
+
}
|
|
52
|
+
? null
|
|
53
|
+
: never
|
|
54
|
+
|
|
55
|
+
type IsList<X> = X extends {
|
|
56
|
+
readonly [fieldType]: { readonly options: { readonly list: true } }
|
|
57
|
+
}
|
|
58
|
+
? true
|
|
59
|
+
: false
|
|
60
|
+
|
|
61
|
+
/** A json field's value, any JSON without a schema, or a path filter (D-149). */
|
|
62
|
+
type JsonFilter<V> = V | ScalarFilter<NonNullable<V>> | JsonPathFilter
|
|
63
|
+
|
|
64
|
+
type FilterOf<X> =
|
|
65
|
+
IsList<X> extends true
|
|
66
|
+
? StoredValue<X> extends readonly (infer E)[]
|
|
67
|
+
? ListFilter<E>
|
|
68
|
+
: never
|
|
69
|
+
: KindOf<X> extends 'scalar'
|
|
70
|
+
? X extends { readonly [fieldType]: { readonly json: true } }
|
|
71
|
+
? JsonFilter<
|
|
72
|
+
unknown extends StoredValue<X> ? JsonValue : StoredValue<X>
|
|
73
|
+
>
|
|
74
|
+
: | StoredValue<X>
|
|
75
|
+
| ScalarFilter<NonNullable<StoredValue<X>>, IsOrdered<X>>
|
|
76
|
+
: KindOf<X> extends 'one'
|
|
77
|
+
? {
|
|
78
|
+
readonly is?: Where<TargetFields<TargetOf<X>>> | null | undefined
|
|
79
|
+
readonly isNot?: Where<TargetFields<TargetOf<X>>> | null | undefined
|
|
80
|
+
}
|
|
81
|
+
: {
|
|
82
|
+
readonly some?: Where<TargetFields<TargetOf<X>>> | undefined
|
|
83
|
+
readonly every?: Where<TargetFields<TargetOf<X>>> | undefined
|
|
84
|
+
readonly none?: Where<TargetFields<TargetOf<X>>> | undefined
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** A plugin field type's stored field (D-122), `never` for a kernel one. */
|
|
88
|
+
type StoredOf<X> = X extends {
|
|
89
|
+
readonly [fieldType]: { readonly stored: infer S }
|
|
90
|
+
}
|
|
91
|
+
? S
|
|
92
|
+
: never
|
|
93
|
+
/** The fields of a plugin field type, which only a `beforeFind` filters. */
|
|
94
|
+
type PluginKeys<F> = {
|
|
95
|
+
[K in keyof F]: [StoredOf<F[K]>] extends [never] ? never : K
|
|
96
|
+
}[keyof F]
|
|
97
|
+
|
|
98
|
+
/** The system fields' filters and the combinators of a `where` `W`. */
|
|
99
|
+
interface Filters<W> {
|
|
100
|
+
readonly id?: string | Omit<ScalarFilter<string>, 'mode'> | undefined
|
|
101
|
+
readonly createdAt?: Date | ScalarFilter<Date> | undefined
|
|
102
|
+
readonly updatedAt?: Date | ScalarFilter<Date> | undefined
|
|
103
|
+
readonly AND?: W | readonly W[] | undefined
|
|
104
|
+
readonly OR?: readonly W[] | undefined
|
|
105
|
+
readonly NOT?: W | readonly W[] | undefined
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** No `where` filters a virtual (D-151). */
|
|
109
|
+
export type Where<F> = {
|
|
110
|
+
readonly [K in Exclude<keyof F, PluginKeys<F> | VirtualKeys<F>>]?:
|
|
111
|
+
FilterOf<F[K]> | undefined
|
|
112
|
+
} & Filters<Where<F>> &
|
|
113
|
+
SearchWhere<F>
|
|
114
|
+
|
|
115
|
+
/** A `beforeFind`'s filter: a plugin field's in its stored form (D-122). */
|
|
116
|
+
export type FindWhere<F> = {
|
|
117
|
+
readonly [K in Exclude<keyof F, VirtualKeys<F>>]?:
|
|
118
|
+
| (K extends PluginKeys<F> ? FilterOf<StoredOf<F[K]>> : FilterOf<F[K]>)
|
|
119
|
+
| undefined
|
|
120
|
+
} & Filters<FindWhere<F>> &
|
|
121
|
+
SearchWhere<F>
|
|
122
|
+
|
|
123
|
+
/** A unique index's value: a scalar's, or a `one` relation's target id. */
|
|
124
|
+
type IndexValue<X> =
|
|
125
|
+
KindOf<X> extends 'one' ? string : NonNullable<StoredValue<X>>
|
|
126
|
+
/** A unique index, targeted flat with exactly its fields (D-52). */
|
|
127
|
+
type IndexTarget<F, X> = X extends readonly (infer K extends keyof F)[]
|
|
128
|
+
? { readonly [P in K]: IndexValue<F[P]> }
|
|
129
|
+
: never
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* `findUnique` and single-row writes target `id`, a unique field or a unique
|
|
133
|
+
* index, whose fields `X` lists (D-52).
|
|
134
|
+
*/
|
|
135
|
+
export type UniqueWhere<F, X = never> =
|
|
136
|
+
| { readonly id: string }
|
|
137
|
+
| {
|
|
138
|
+
[K in UniqueKeys<F>]: { readonly [P in K]: StoredValue<F[K]> }
|
|
139
|
+
}[UniqueKeys<F>]
|
|
140
|
+
| IndexTarget<F, X>
|
|
141
|
+
|
|
142
|
+
type Direction = 'asc' | 'desc'
|
|
143
|
+
/**
|
|
144
|
+
* A json field is not sorted: each database orders json its own way (D-94);
|
|
145
|
+
* nor is a list (D-120), nor a plugin field (D-122).
|
|
146
|
+
*/
|
|
147
|
+
export type SortedKeys<F> = {
|
|
148
|
+
[K in Exclude<ScalarKeys<F>, PluginKeys<F>>]: F[K] extends {
|
|
149
|
+
readonly [fieldType]: { readonly json: true }
|
|
150
|
+
}
|
|
151
|
+
? never
|
|
152
|
+
: IsList<F[K]> extends true
|
|
153
|
+
? never
|
|
154
|
+
: K
|
|
155
|
+
}[Exclude<ScalarKeys<F>, PluginKeys<F>>]
|
|
156
|
+
type KeysOf<F, Kind> = {
|
|
157
|
+
[K in keyof F]: KindOf<F[K]> extends Kind ? K : never
|
|
158
|
+
}[keyof F]
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* An optional field sorts with its `null`s first or last (D-149), a `one`
|
|
162
|
+
* relation by its target's fields, a `many` by its count (D-134).
|
|
163
|
+
*/
|
|
164
|
+
type Sorts<F> = {
|
|
165
|
+
readonly [K in SortedKeys<F> | keyof SystemFields]?:
|
|
166
|
+
SortOrder<K extends keyof RecordOf<F> ? RecordOf<F>[K] : never> | undefined
|
|
167
|
+
} & {
|
|
168
|
+
readonly [K in KeysOf<F, 'one'>]?:
|
|
169
|
+
Sorts<TargetFields<TargetOf<F[K]>>> | undefined
|
|
170
|
+
} & {
|
|
171
|
+
readonly [K in KeysOf<F, 'many'>]?: { readonly _count: Direction } | undefined
|
|
172
|
+
}
|
|
173
|
+
/** A read's sort, by its `_search`'s relevance too (D-148). */
|
|
174
|
+
export type OrderBy<F> = Sorts<F> & Relevance<F>
|
|
175
|
+
|
|
176
|
+
/** `_count`: every `many` relation, or the ones `select` names (D-134). */
|
|
177
|
+
type Count<F> =
|
|
178
|
+
| true
|
|
179
|
+
| {
|
|
180
|
+
readonly select: {
|
|
181
|
+
readonly [K in KeysOf<F, 'many'>]?:
|
|
182
|
+
| boolean
|
|
183
|
+
| { readonly where?: Where<TargetFields<TargetOf<F[K]>>> | undefined }
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** A model with a `many` relation takes `_count`. */
|
|
188
|
+
type Counts<F> = [KeysOf<F, 'many'>] extends [never]
|
|
189
|
+
? unknown
|
|
190
|
+
: { readonly _count?: Count<F> | false }
|
|
191
|
+
|
|
192
|
+
type Counted<F, C> = C extends { readonly select: infer S }
|
|
193
|
+
? {
|
|
194
|
+
readonly [
|
|
195
|
+
K in keyof S as S[K] extends false | undefined ? never : K
|
|
196
|
+
]: number
|
|
197
|
+
}
|
|
198
|
+
: C extends true
|
|
199
|
+
? { readonly [K in KeysOf<F, 'many'>]: number }
|
|
200
|
+
: unknown
|
|
201
|
+
|
|
202
|
+
/** The `_count` of a `select` or an `include` `A`. */
|
|
203
|
+
type CountOf<F, A> = A extends { readonly _count: infer C }
|
|
204
|
+
? C extends false | undefined
|
|
205
|
+
? unknown
|
|
206
|
+
: { readonly _count: Counted<F, C> }
|
|
207
|
+
: unknown
|
|
208
|
+
|
|
209
|
+
type RelationArgs<X> = Shaping<TargetFields<TargetOf<X>>> &
|
|
210
|
+
(KindOf<X> extends 'many'
|
|
211
|
+
? {
|
|
212
|
+
readonly where?: Where<TargetFields<TargetOf<X>>> | undefined
|
|
213
|
+
readonly orderBy?: OrderBy<TargetFields<TargetOf<X>>> | undefined
|
|
214
|
+
readonly take?: number | undefined
|
|
215
|
+
readonly skip?: number | undefined
|
|
216
|
+
readonly cursor?: UniqueWhere<TargetFields<TargetOf<X>>> | undefined
|
|
217
|
+
}
|
|
218
|
+
: unknown)
|
|
219
|
+
|
|
220
|
+
export type Select<F> = {
|
|
221
|
+
readonly [K in keyof SystemFields]?: boolean
|
|
222
|
+
} & {
|
|
223
|
+
readonly [K in keyof F]?: KindOf<F[K]> extends 'scalar'
|
|
224
|
+
? boolean
|
|
225
|
+
: KindOf<F[K]> extends 'virtual'
|
|
226
|
+
? VirtualArgs<F[K]>
|
|
227
|
+
: boolean | RelationArgs<F[K]>
|
|
228
|
+
} & Counts<F>
|
|
229
|
+
|
|
230
|
+
/** A model without relations or virtuals takes no `include`. */
|
|
231
|
+
export type Include<F> = [RelationKeys<F> | VirtualKeys<F>] extends [never]
|
|
232
|
+
? never
|
|
233
|
+
: {
|
|
234
|
+
readonly [K in RelationKeys<F>]?: boolean | RelationArgs<F[K]>
|
|
235
|
+
} & VirtualIncludes<F> &
|
|
236
|
+
Counts<F>
|
|
237
|
+
|
|
238
|
+
type Output<X, A> =
|
|
239
|
+
KindOf<X> extends 'scalar'
|
|
240
|
+
? StoredValue<X>
|
|
241
|
+
: KindOf<X> extends 'virtual'
|
|
242
|
+
? VirtualOutput<X, A>
|
|
243
|
+
: KindOf<X> extends 'one'
|
|
244
|
+
? Payload<TargetFields<TargetOf<X>>, A> | OptionalOne<X>
|
|
245
|
+
: Payload<TargetFields<TargetOf<X>>, A>[]
|
|
246
|
+
|
|
247
|
+
type Selected<F, S> = {
|
|
248
|
+
readonly [
|
|
249
|
+
K in Exclude<keyof S, '_count'> as S[K] extends false | undefined
|
|
250
|
+
? never
|
|
251
|
+
: K
|
|
252
|
+
]: K extends keyof F
|
|
253
|
+
? Output<F[K], S[K]>
|
|
254
|
+
: K extends keyof SystemFields
|
|
255
|
+
? SystemFields[K]
|
|
256
|
+
: never
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
type Included<F, I> = {
|
|
260
|
+
readonly [
|
|
261
|
+
K in Exclude<keyof I, '_count'> as I[K] extends false | undefined
|
|
262
|
+
? never
|
|
263
|
+
: K
|
|
264
|
+
]: K extends keyof F ? Output<F[K], I[K]> : never
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/** `omit`: scalars, system fields, default virtuals left out (D-135). */
|
|
268
|
+
export type OmitArgs<F> = {
|
|
269
|
+
readonly [K in keyof RecordOf<F> | DefaultVirtualKeys<F>]?: boolean
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** `select` and `omit` exclude each other (D-135). */
|
|
273
|
+
export type Shaping<F> = { readonly include?: Include<F> } & (
|
|
274
|
+
| { readonly select?: Select<F>; readonly omit?: undefined }
|
|
275
|
+
| { readonly select?: undefined; readonly omit?: OmitArgs<F> }
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
/** The scalar and system fields, less those `omit` sets to `true`. */
|
|
279
|
+
type Kept<F, A> = A extends { readonly omit: infer O }
|
|
280
|
+
? Omit<
|
|
281
|
+
DefaultRow<F>,
|
|
282
|
+
{ [K in keyof O]: O[K] extends true ? K : never }[keyof O]
|
|
283
|
+
>
|
|
284
|
+
: DefaultRow<F>
|
|
285
|
+
|
|
286
|
+
/** Without `select`, scalar fields return and relations do not (D-20). */
|
|
287
|
+
export type Payload<F, A> = A extends { readonly select: infer S }
|
|
288
|
+
? Selected<F, S> & CountOf<F, S>
|
|
289
|
+
: A extends { readonly include: infer I }
|
|
290
|
+
? Kept<F, A> & Included<F, I> & CountOf<F, I>
|
|
291
|
+
: Kept<F, A>
|
|
292
|
+
|
|
293
|
+
export type QueryOptions = { readonly as?: Identity }
|
|
294
|
+
|
|
295
|
+
/** `findFirst`; `cursor` starts at a unique target. */
|
|
296
|
+
export type FindFirstArgs<F, X = never> = Shaping<F> & {
|
|
297
|
+
readonly where?: Where<F> | undefined
|
|
298
|
+
readonly orderBy?: OrderBy<F> | readonly OrderBy<F>[] | undefined
|
|
299
|
+
readonly take?: number | undefined
|
|
300
|
+
readonly skip?: number | undefined
|
|
301
|
+
readonly cursor?: UniqueWhere<F, X> | undefined
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/** `findMany`: `distinct` keeps one row per key, without `cursor` (D-147). */
|
|
305
|
+
export type FindManyArgs<F, X = never, N = never> = FindFirstArgs<F, X> & {
|
|
306
|
+
readonly distinct?:
|
|
307
|
+
readonly [GroupField<F, N>, ...GroupField<F, N>[]] | undefined
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export type FindUniqueArgs<F, X = never> = Shaping<F> & {
|
|
311
|
+
readonly where: UniqueWhere<F, X>
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export type CreateArgs<F, N = never> = Shaping<F> & {
|
|
315
|
+
readonly data: CreateData<F, N>
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export type UpdateArgs<F, X = never, N = never> = Shaping<F> & {
|
|
319
|
+
readonly where: UniqueWhere<F, X>
|
|
320
|
+
readonly data: UpdateData<F, N>
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/** `update` the row `where` targets, or `create` it when absent (D-142). */
|
|
324
|
+
export type UpsertArgs<F, X = never, N = never> = Shaping<F> & {
|
|
325
|
+
readonly where: UniqueWhere<F, X>
|
|
326
|
+
readonly create: CreateData<F, N>
|
|
327
|
+
readonly update: UpdateData<F, N>
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/** Model methods (D-18), the subset the prototype measures. */
|
|
331
|
+
// Each query is a closure on its model: it can be passed around unbound.
|
|
332
|
+
/** `N` is the model's name, which nested creation needs (D-128). */
|
|
333
|
+
export interface Queries<F, X = never, N = never> extends BulkQueries<F> {
|
|
334
|
+
findMany<const A extends FindManyArgs<F, X, N>>(
|
|
335
|
+
this: void,
|
|
336
|
+
args?: A & NoInfer<Exact<A, FindManyArgs<F, X, N>>>,
|
|
337
|
+
options?: QueryOptions,
|
|
338
|
+
): Promise<Payload<F, A>[]>
|
|
339
|
+
findFirst<const A extends FindFirstArgs<F, X>>(
|
|
340
|
+
this: void,
|
|
341
|
+
args?: A & NoInfer<Exact<A, FindFirstArgs<F, X>>>,
|
|
342
|
+
options?: QueryOptions,
|
|
343
|
+
): Promise<Payload<F, A> | null>
|
|
344
|
+
findUnique<const A extends FindUniqueArgs<F, X>>(
|
|
345
|
+
this: void,
|
|
346
|
+
args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>,
|
|
347
|
+
options?: QueryOptions,
|
|
348
|
+
): Promise<Payload<F, A> | null>
|
|
349
|
+
/** `findFirst`, which fails with `NOT_FOUND` rather than `null` (D-135). */
|
|
350
|
+
findFirstOrThrow<const A extends FindFirstArgs<F, X>>(
|
|
351
|
+
this: void,
|
|
352
|
+
args?: A & NoInfer<Exact<A, FindFirstArgs<F, X>>>,
|
|
353
|
+
options?: QueryOptions,
|
|
354
|
+
): Promise<Payload<F, A>>
|
|
355
|
+
/** `findUnique`, which fails with `NOT_FOUND` rather than `null` (D-135). */
|
|
356
|
+
findUniqueOrThrow<const A extends FindUniqueArgs<F, X>>(
|
|
357
|
+
this: void,
|
|
358
|
+
args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>,
|
|
359
|
+
options?: QueryOptions,
|
|
360
|
+
): Promise<Payload<F, A>>
|
|
361
|
+
count(
|
|
362
|
+
this: void,
|
|
363
|
+
args?: { readonly where?: Where<F> },
|
|
364
|
+
options?: QueryOptions,
|
|
365
|
+
): Promise<number>
|
|
366
|
+
/** Of the rows the caller reads; server code only (D-143). */
|
|
367
|
+
aggregate<const A extends AggregateArgs<F>>(
|
|
368
|
+
this: void,
|
|
369
|
+
args: A & NoInfer<Exact<A, AggregateArgs<F>>>,
|
|
370
|
+
options?: QueryOptions,
|
|
371
|
+
): Promise<Aggregates<F, A>>
|
|
372
|
+
/** Of the rows the caller reads, by `by`; server code only (D-146). */
|
|
373
|
+
groupBy<const A extends GroupByArgs<F, N>>(
|
|
374
|
+
this: void,
|
|
375
|
+
args: A & NoInfer<GroupChecked<F, N, A>>,
|
|
376
|
+
options?: QueryOptions,
|
|
377
|
+
): Promise<Groups<F, N, A>>
|
|
378
|
+
create<const A extends CreateArgs<F, N>>(
|
|
379
|
+
this: void,
|
|
380
|
+
args: A & NoInfer<Exact<A, CreateArgs<F, N>>>,
|
|
381
|
+
options?: QueryOptions,
|
|
382
|
+
): Promise<Payload<F, A>>
|
|
383
|
+
update<const A extends UpdateArgs<F, X, N>>(
|
|
384
|
+
this: void,
|
|
385
|
+
args: A & NoInfer<Exact<A, UpdateArgs<F, X, N>>>,
|
|
386
|
+
options?: QueryOptions,
|
|
387
|
+
): Promise<Payload<F, A>>
|
|
388
|
+
/** The branch that runs applies its own rules and hooks (D-142). */
|
|
389
|
+
upsert<const A extends UpsertArgs<F, X, N>>(
|
|
390
|
+
this: void,
|
|
391
|
+
args: A & NoInfer<Exact<A, UpsertArgs<F, X, N>>>,
|
|
392
|
+
options?: QueryOptions,
|
|
393
|
+
): Promise<Payload<F, A>>
|
|
394
|
+
/** Its relations and counts are read as they were before it (D-135). */
|
|
395
|
+
delete<const A extends FindUniqueArgs<F, X>>(
|
|
396
|
+
this: void,
|
|
397
|
+
args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>,
|
|
398
|
+
options?: QueryOptions,
|
|
399
|
+
): Promise<Payload<F, A>>
|
|
400
|
+
}
|