@nixxie-cms/core 1.0.0 → 1.0.1
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/README.md +2 -2
- package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +4 -4
- package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +4 -4
- package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +2 -2
- package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +2 -2
- package/context/dist/nixxie-cms-core-context.cjs.js +2 -2
- package/context/dist/nixxie-cms-core-context.esm.js +2 -2
- package/dist/{CreateItemDialog-33335548.esm.js → CreateItemDialog-7008b050.esm.js} +1 -1
- package/dist/{CreateItemDialog-56cf59b7.cjs.js → CreateItemDialog-a0cab315.cjs.js} +1 -1
- package/dist/{PageContainer-7db73317.esm.js → PageContainer-5ae731cc.esm.js} +25 -18
- package/dist/{PageContainer-27c27f10.cjs.js → PageContainer-abd7159f.cjs.js} +25 -18
- package/dist/{admin-meta-graphql-6f7f5331.esm.js → admin-meta-graphql-0e6e606e.esm.js} +1 -1
- package/dist/{admin-meta-graphql-c8f926e9.cjs.js → admin-meta-graphql-306c224a.cjs.js} +1 -1
- package/dist/{context-3132c3ed.esm.js → context-af9957ed.esm.js} +2 -2
- package/dist/{context-e7a45152.cjs.js → context-b5204629.cjs.js} +2 -2
- package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -1
- package/dist/declarations/src/helpers.d.ts.map +1 -1
- package/dist/declarations/src/index.d.ts +1 -0
- package/dist/declarations/src/index.d.ts.map +1 -1
- package/dist/declarations/src/internal-unstable/admin-ui/id-field-view.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/App/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/HomePage/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
- package/dist/declarations/src/internal-unstable/artifacts.d.ts.map +1 -0
- package/dist/declarations/src/lib/core/initialise-lists.d.ts +1 -1
- package/dist/declarations/src/schema.d.ts.map +1 -1
- package/dist/declarations/src/types/config/index.d.ts +60 -1
- package/dist/declarations/src/types/config/index.d.ts.map +1 -1
- package/dist/declarations/src/types/config/lists.d.ts +4 -4
- package/dist/declarations/src/types/context.d.ts +150 -0
- package/dist/declarations/src/types/context.d.ts.map +1 -1
- package/dist/declarations/src/types/next-fields.d.ts +1 -1
- package/dist/{express-e9ed9a7d.cjs.js → express-455ae20c.cjs.js} +1 -1
- package/dist/{express-6743b918.esm.js → express-7559ca2d.esm.js} +1 -1
- package/dist/{index-ac01583b.cjs.js → index-89635494.cjs.js} +4 -4
- package/dist/{index-24b78415.esm.js → index-baa799e0.esm.js} +4 -4
- package/dist/nixxie-cms-core.cjs.js +104 -77
- package/dist/nixxie-cms-core.esm.js +104 -77
- package/dist/{non-null-graphql-5315718c.esm.js → non-null-graphql-a84ed64d.esm.js} +1 -1
- package/dist/{non-null-graphql-17b83ddc.cjs.js → non-null-graphql-add6bb3d.cjs.js} +1 -1
- package/dist/{resolve-hooks-66fe8a8e.cjs.js → resolve-hooks-165a9ce2.cjs.js} +1 -1
- package/dist/{resolve-hooks-17aafd37.esm.js → resolve-hooks-6813a045.esm.js} +2 -2
- package/dist/{system-dfec2f0a.esm.js → system-03e49e4f.esm.js} +8 -4
- package/dist/{system-48c5f6df.cjs.js → system-a321642d.cjs.js} +8 -4
- package/dist/{useFilter-0b5a1ee6.esm.js → useFilter-9b6db1f9.esm.js} +1 -1
- package/dist/{useFilter-1a4e6900.cjs.js → useFilter-acc9d413.cjs.js} +1 -1
- package/fields/dist/nixxie-cms-core-fields.cjs.js +16 -16
- package/fields/dist/nixxie-cms-core-fields.esm.js +17 -17
- package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +3 -3
- package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +3 -3
- package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +1 -1
- package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +1 -1
- package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +3 -3
- package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +3 -3
- package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +4 -4
- package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +4 -4
- package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +1 -1
- package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +1 -1
- package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +1 -1
- package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +1 -1
- package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.js +244 -0
- package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.esm.js +235 -0
- package/internal-unstable/admin-ui/id-field-view/package.json +4 -0
- package/internal-unstable/admin-ui/next-config/package.json +4 -0
- package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.js +59 -0
- package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.esm.js +55 -0
- package/internal-unstable/admin-ui/pages/App/package.json +4 -0
- package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.js +116 -0
- package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.esm.js +112 -0
- package/internal-unstable/admin-ui/pages/CreateItemPage/package.json +4 -0
- package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.js +336 -0
- package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.esm.js +332 -0
- package/internal-unstable/admin-ui/pages/HomePage/package.json +4 -0
- package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.js +463 -0
- package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.esm.js +455 -0
- package/internal-unstable/admin-ui/pages/ItemPage/package.json +4 -0
- package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.js +1195 -0
- package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.esm.js +1187 -0
- package/internal-unstable/admin-ui/pages/ListPage/package.json +4 -0
- package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
- package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.js +40 -0
- package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.esm.js +35 -0
- package/internal-unstable/admin-ui/pages/NoAccessPage/package.json +4 -0
- package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.d.ts +2 -0
- package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.js +51 -0
- package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.esm.js +38 -0
- package/internal-unstable/artifacts/package.json +4 -0
- package/package.json +44 -44
- package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +15 -15
- package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +15 -15
- package/scripts/dist/nixxie-cms-core-scripts.cjs.js +3 -3
- package/scripts/dist/nixxie-cms-core-scripts.esm.js +3 -3
- package/src/admin-ui/admin-meta-graphql.ts +168 -168
- package/src/admin-ui/components/CommandPalette.tsx +433 -431
- package/src/admin-ui/components/Navigation.tsx +389 -385
- package/src/admin-ui/components/PageContainer.tsx +311 -310
- package/src/admin-ui/components/WelcomeDialog.tsx +1 -1
- package/src/admin-ui/context.tsx +338 -338
- package/src/admin-ui/templates/app.ts +60 -60
- package/src/admin-ui/templates/create-item.ts +5 -5
- package/src/admin-ui/templates/home.ts +2 -2
- package/src/admin-ui/templates/item.tsx +5 -5
- package/src/admin-ui/templates/list.tsx +5 -5
- package/src/admin-ui/templates/no-access.ts +7 -7
- package/src/fields/types/bigInt/index.ts +181 -181
- package/src/fields/types/bytes/index.ts +275 -275
- package/src/fields/types/calendarDay/index.ts +194 -194
- package/src/fields/types/checkbox/index.ts +76 -76
- package/src/fields/types/decimal/index.ts +182 -182
- package/src/fields/types/file/index.ts +168 -168
- package/src/fields/types/float/index.ts +133 -133
- package/src/fields/types/image/index.ts +244 -244
- package/src/fields/types/integer/index.ts +156 -156
- package/src/fields/types/json/index.ts +77 -77
- package/src/fields/types/multiselect/index.ts +212 -212
- package/src/fields/types/password/index.ts +241 -241
- package/src/fields/types/relationship/index.ts +381 -381
- package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -190
- package/src/fields/types/select/index.ts +226 -226
- package/src/fields/types/text/index.ts +207 -207
- package/src/fields/types/timestamp/index.ts +116 -116
- package/src/fields/types/virtual/index.ts +108 -108
- package/src/helpers.ts +342 -316
- package/src/index.ts +4 -0
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.tsx +167 -167
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.tsx +22 -22
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.tsx +71 -71
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.tsx +333 -333
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/common.tsx +358 -358
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.tsx +483 -483
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/FilterAdd.tsx +221 -221
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/PaginationControls.tsx +170 -170
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/Tag.tsx +72 -72
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.tsx +1006 -1006
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.tsx +24 -24
- package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.ts +5 -5
- package/src/lib/context/createContext.ts +165 -161
- package/src/lib/core/initialise-lists.ts +1097 -1097
- package/src/lib/id-field.ts +214 -214
- package/src/lib/telemetry.ts +342 -342
- package/src/schema.ts +237 -233
- package/src/scripts/telemetry.ts +1 -1
- package/src/types/config/index.ts +400 -333
- package/src/types/config/lists.ts +4 -4
- package/src/types/context.ts +700 -530
- package/src/types/next-fields.ts +499 -499
- package/src/types/telemetry.ts +51 -51
- package/tests/telemetry.test.ts +361 -361
- package/CHANGELOG.md +0 -3158
- package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +0 -4
- package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +0 -4
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +0 -1
- package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +0 -1
- /package/dist/{common-1a350e11.cjs.js → common-5933f758.cjs.js} +0 -0
- /package/dist/{common-29fc82e6.esm.js → common-ea5c441a.esm.js} +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.d.ts +0 -0
- /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.d.ts +0 -0
package/src/types/next-fields.ts
CHANGED
|
@@ -1,499 +1,499 @@
|
|
|
1
|
-
import Decimal from 'decimal.js'
|
|
2
|
-
import { g } from '../types/schema'
|
|
3
|
-
import type { BaseListTypeInfo } from './type-info'
|
|
4
|
-
import type { BaseFieldTypeInfo, CommonFieldConfig } from './config'
|
|
5
|
-
import type { DatabaseProvider } from './core'
|
|
6
|
-
import type {
|
|
7
|
-
GArg,
|
|
8
|
-
GInputType,
|
|
9
|
-
GNullableInputType,
|
|
10
|
-
InferValueFromArg,
|
|
11
|
-
GField,
|
|
12
|
-
GOutputType,
|
|
13
|
-
GInputObjectType,
|
|
14
|
-
GList,
|
|
15
|
-
GNonNull,
|
|
16
|
-
InferValueFromArgs,
|
|
17
|
-
GObjectType,
|
|
18
|
-
InferValueFromInputType,
|
|
19
|
-
} from '@graphql-ts/schema'
|
|
20
|
-
import type { JSONValue, NixxieContext, MaybePromise } from '.'
|
|
21
|
-
import type { filters } from '../fields/filters'
|
|
22
|
-
|
|
23
|
-
export { Decimal }
|
|
24
|
-
|
|
25
|
-
export type BaseItem = { id: { toString(): string }; [key: string]: unknown }
|
|
26
|
-
|
|
27
|
-
export type ListGraphQLTypes<ListTypeInfo extends BaseListTypeInfo> = {
|
|
28
|
-
types: GraphQLTypesForList<ListTypeInfo>
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export type FieldData<ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo> = {
|
|
32
|
-
lists: {
|
|
33
|
-
[Key in keyof ListTypeInfo['all']['lists']]: ListGraphQLTypes<ListTypeInfo['all']['lists'][Key]>
|
|
34
|
-
}
|
|
35
|
-
provider: DatabaseProvider
|
|
36
|
-
listKey: ListTypeInfo['key']
|
|
37
|
-
fieldKey: string
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
type ScalarNames = Exclude<keyof (typeof filters)[DatabaseProvider], 'enum'>
|
|
41
|
-
|
|
42
|
-
export type SimpleFieldTypeInfo<Scalar extends ScalarNames> = {
|
|
43
|
-
item: ScalarPrismaTypes[Scalar] | null
|
|
44
|
-
inputs: {
|
|
45
|
-
create: ScalarPrismaTypes[Scalar] | null | undefined
|
|
46
|
-
update: ScalarPrismaTypes[Scalar] | null | undefined
|
|
47
|
-
where: InferValueFromInputType<(typeof filters)[DatabaseProvider][Scalar]['required']> | null
|
|
48
|
-
uniqueWhere: ScalarPrismaTypes[Scalar] | null | undefined
|
|
49
|
-
orderBy: 'asc' | 'desc' | null
|
|
50
|
-
}
|
|
51
|
-
prisma: {
|
|
52
|
-
create:
|
|
53
|
-
| ScalarPrismaTypes[Scalar]
|
|
54
|
-
| { set?: ScalarPrismaTypes[Scalar] | null }
|
|
55
|
-
| null
|
|
56
|
-
| undefined
|
|
57
|
-
update:
|
|
58
|
-
| ScalarPrismaTypes[Scalar]
|
|
59
|
-
| { set?: ScalarPrismaTypes[Scalar] | null }
|
|
60
|
-
| null
|
|
61
|
-
| undefined
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export type FieldTypeFunc<ListTypeInfo extends BaseListTypeInfo> = (
|
|
66
|
-
data: FieldData<ListTypeInfo>
|
|
67
|
-
) => NextFieldType<
|
|
68
|
-
DBField,
|
|
69
|
-
GArg<GInputType> | undefined,
|
|
70
|
-
GArg<GInputType>,
|
|
71
|
-
GArg<GNullableInputType, false>,
|
|
72
|
-
GArg<GNullableInputType, false>,
|
|
73
|
-
GArg<GNullableInputType, false>,
|
|
74
|
-
ListTypeInfo
|
|
75
|
-
>
|
|
76
|
-
|
|
77
|
-
export type NextFieldType<
|
|
78
|
-
TDBField extends DBField = DBField,
|
|
79
|
-
CreateArg extends GArg<GInputType> | undefined = GArg<GInputType> | undefined,
|
|
80
|
-
UpdateArg extends GArg<GInputType> = GArg<GInputType>,
|
|
81
|
-
UniqueWhereArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
82
|
-
OrderByArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
83
|
-
FilterArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
84
|
-
ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo,
|
|
85
|
-
> = {
|
|
86
|
-
dbField: TDBField
|
|
87
|
-
} & FieldTypeWithoutDBField<
|
|
88
|
-
TDBField,
|
|
89
|
-
CreateArg,
|
|
90
|
-
UpdateArg,
|
|
91
|
-
UniqueWhereArg,
|
|
92
|
-
OrderByArg,
|
|
93
|
-
FilterArg,
|
|
94
|
-
ListTypeInfo
|
|
95
|
-
>
|
|
96
|
-
|
|
97
|
-
export type ScalarPrismaTypes = {
|
|
98
|
-
String: string
|
|
99
|
-
Boolean: boolean
|
|
100
|
-
Int: number
|
|
101
|
-
Float: number
|
|
102
|
-
DateTime: Date
|
|
103
|
-
BigInt: bigint
|
|
104
|
-
Json: JSONValue
|
|
105
|
-
Decimal: Decimal
|
|
106
|
-
Bytes: Uint8Array
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
type Literal<T> = {
|
|
110
|
-
kind: 'literal'
|
|
111
|
-
value: T
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export type ScalarDBFieldDefault<
|
|
115
|
-
Scalar extends keyof ScalarPrismaTypes = keyof ScalarPrismaTypes,
|
|
116
|
-
Mode extends 'required' | 'many' | 'optional' = 'required' | 'many' | 'optional',
|
|
117
|
-
> = Mode extends 'many'
|
|
118
|
-
? never
|
|
119
|
-
:
|
|
120
|
-
| {
|
|
121
|
-
String:
|
|
122
|
-
| Literal<string>
|
|
123
|
-
| { kind: 'uuid'; version?: 4 | 7 }
|
|
124
|
-
| { kind: 'cuid'; version?: 1 | 2 }
|
|
125
|
-
| { kind: 'ulid' }
|
|
126
|
-
| { kind: 'nanoid'; length?: number }
|
|
127
|
-
| { kind: 'random'; bytes: number; encoding: 'hex' | 'base64url' }
|
|
128
|
-
Boolean: Literal<boolean>
|
|
129
|
-
Json: Literal<string>
|
|
130
|
-
Float: Literal<number>
|
|
131
|
-
Int: Literal<number> | { kind: 'autoincrement' }
|
|
132
|
-
BigInt: Literal<bigint> | { kind: 'autoincrement' }
|
|
133
|
-
DateTime: Literal<string> | { kind: 'now' }
|
|
134
|
-
Decimal: Literal<string>
|
|
135
|
-
Bytes: Literal<Uint8Array>
|
|
136
|
-
}[Scalar]
|
|
137
|
-
| { kind: 'dbgenerated'; value: string }
|
|
138
|
-
|
|
139
|
-
export type ScalarDBField<
|
|
140
|
-
Scalar extends keyof ScalarPrismaTypes,
|
|
141
|
-
Mode extends 'required' | 'many' | 'optional',
|
|
142
|
-
> = {
|
|
143
|
-
kind: 'scalar'
|
|
144
|
-
scalar: Scalar
|
|
145
|
-
mode: Mode
|
|
146
|
-
default?: ScalarDBFieldDefault<Scalar, Mode> | undefined
|
|
147
|
-
extendPrismaSchema?: (field: string) => string
|
|
148
|
-
index?: 'unique' | 'index' | undefined
|
|
149
|
-
|
|
150
|
-
map?: string
|
|
151
|
-
nativeType?: string
|
|
152
|
-
updatedAt?: Scalar extends 'DateTime' ? boolean : never
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export type RelationDBField<Mode extends 'many' | 'one'> = {
|
|
156
|
-
kind: 'relation'
|
|
157
|
-
mode: Mode
|
|
158
|
-
extendPrismaSchema?: (field: string) => string
|
|
159
|
-
|
|
160
|
-
list: string
|
|
161
|
-
field?: string
|
|
162
|
-
foreignKey?: { one: true | { map: string }; many: undefined }[Mode]
|
|
163
|
-
relationName?: { one: undefined; many: string }[Mode]
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export type EnumDBField<Value extends string, Mode extends 'required' | 'many' | 'optional'> = {
|
|
167
|
-
kind: 'enum'
|
|
168
|
-
name: string
|
|
169
|
-
mode: Mode
|
|
170
|
-
default?: { kind: 'literal'; value: Value }
|
|
171
|
-
extendPrismaSchema?: (field: string) => string
|
|
172
|
-
index?: 'unique' | 'index'
|
|
173
|
-
|
|
174
|
-
map?: string
|
|
175
|
-
values: readonly Value[]
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export const orderDirectionEnum = g.enum({
|
|
179
|
-
name: 'OrderDirection',
|
|
180
|
-
values: g.enumValues(['asc', 'desc']),
|
|
181
|
-
})
|
|
182
|
-
|
|
183
|
-
export const QueryMode = g.enum({
|
|
184
|
-
name: 'QueryMode',
|
|
185
|
-
values: g.enumValues(['default', 'insensitive']),
|
|
186
|
-
})
|
|
187
|
-
|
|
188
|
-
export type NoDBField = { kind: 'none' }
|
|
189
|
-
|
|
190
|
-
// TODO: merge
|
|
191
|
-
export type ScalarishDBField =
|
|
192
|
-
| ScalarDBField<keyof ScalarPrismaTypes, 'required' | 'many' | 'optional'>
|
|
193
|
-
| EnumDBField<string, 'required' | 'many' | 'optional'>
|
|
194
|
-
|
|
195
|
-
export type RealDBField = ScalarishDBField | RelationDBField<'many' | 'one'>
|
|
196
|
-
|
|
197
|
-
export type MultiDBField<Fields extends Record<string, ScalarishDBField>> = {
|
|
198
|
-
kind: 'multi'
|
|
199
|
-
fields: Fields
|
|
200
|
-
extendPrismaSchema?: (field: string) => string
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
export type DBField = RealDBField | NoDBField | MultiDBField<Record<string, ScalarishDBField>>
|
|
204
|
-
|
|
205
|
-
// TODO: this isn't right for create
|
|
206
|
-
// for create though, db level defaults need to be taken into account for when to not allow undefined
|
|
207
|
-
type DBFieldToInputValue<TDBField extends DBField> =
|
|
208
|
-
TDBField extends ScalarDBField<infer Scalar, infer Mode>
|
|
209
|
-
? {
|
|
210
|
-
optional: ScalarPrismaTypes[Scalar] | null | undefined
|
|
211
|
-
required: ScalarPrismaTypes[Scalar] | undefined
|
|
212
|
-
many: readonly ScalarPrismaTypes[Scalar][] | undefined
|
|
213
|
-
}[Mode]
|
|
214
|
-
: TDBField extends RelationDBField<'many' | 'one'>
|
|
215
|
-
? { connect?: object; disconnect?: boolean } | undefined
|
|
216
|
-
: TDBField extends EnumDBField<infer Value, infer Mode>
|
|
217
|
-
? {
|
|
218
|
-
optional: Value | null | undefined
|
|
219
|
-
required: Value | undefined
|
|
220
|
-
many: readonly Value[] | undefined
|
|
221
|
-
}[Mode]
|
|
222
|
-
: TDBField extends NoDBField
|
|
223
|
-
? undefined
|
|
224
|
-
: TDBField extends MultiDBField<infer Fields>
|
|
225
|
-
? // note: this is very intentionally not optional and DBFieldToInputValue will add | undefined to force people to explicitly show what they are not setting
|
|
226
|
-
{ [Key in keyof Fields]: DBFieldToInputValue<Fields[Key]> }
|
|
227
|
-
: never
|
|
228
|
-
|
|
229
|
-
type DBFieldUniqueWhere<TDBField extends DBField> =
|
|
230
|
-
TDBField extends ScalarDBField<infer Scalar, 'optional' | 'required'>
|
|
231
|
-
? Scalar extends 'String' | 'Int'
|
|
232
|
-
? {
|
|
233
|
-
String: string
|
|
234
|
-
Int: number
|
|
235
|
-
}[Scalar]
|
|
236
|
-
: any
|
|
237
|
-
: any
|
|
238
|
-
|
|
239
|
-
type DBFieldToOutputValue<TDBField extends DBField> =
|
|
240
|
-
TDBField extends ScalarDBField<infer Scalar, infer Mode>
|
|
241
|
-
? {
|
|
242
|
-
optional: ScalarPrismaTypes[Scalar] | null
|
|
243
|
-
required: ScalarPrismaTypes[Scalar]
|
|
244
|
-
many: readonly ScalarPrismaTypes[Scalar][]
|
|
245
|
-
}[Mode]
|
|
246
|
-
: TDBField extends RelationDBField<infer Mode>
|
|
247
|
-
? {
|
|
248
|
-
one: () => Promise<BaseItem>
|
|
249
|
-
many: {
|
|
250
|
-
findMany(args: FindManyArgsValue): Promise<BaseItem[]>
|
|
251
|
-
count(args: { where: FindManyArgsValue['where'] }): Promise<number>
|
|
252
|
-
}
|
|
253
|
-
}[Mode]
|
|
254
|
-
: TDBField extends EnumDBField<infer Value, infer Mode>
|
|
255
|
-
? {
|
|
256
|
-
optional: Value | null
|
|
257
|
-
required: Value
|
|
258
|
-
many: readonly Value[]
|
|
259
|
-
}[Mode]
|
|
260
|
-
: TDBField extends NoDBField
|
|
261
|
-
? undefined
|
|
262
|
-
: TDBField extends MultiDBField<infer Fields>
|
|
263
|
-
? { [Key in keyof Fields]: DBFieldToOutputValue<Fields[Key]> }
|
|
264
|
-
: never
|
|
265
|
-
|
|
266
|
-
export type OrderByFieldInputArg<Val, TArg extends GArg<GNullableInputType>> = {
|
|
267
|
-
arg: TArg
|
|
268
|
-
} & ResolveFunc<
|
|
269
|
-
(
|
|
270
|
-
value: Exclude<InferValueFromArg<TArg>, null | undefined>,
|
|
271
|
-
context: NixxieContext
|
|
272
|
-
) => MaybePromise<Val>
|
|
273
|
-
>
|
|
274
|
-
|
|
275
|
-
type FieldInputResolver<Input, Output, RelationshipInputResolver> = (
|
|
276
|
-
value: Input,
|
|
277
|
-
context: NixxieContext,
|
|
278
|
-
relationshipInputResolver: RelationshipInputResolver
|
|
279
|
-
) => MaybePromise<Output>
|
|
280
|
-
|
|
281
|
-
type DBFieldFiltersInner<TDBField extends DBField> = Record<string, any>
|
|
282
|
-
|
|
283
|
-
type DBFieldFilters<TDBField extends DBField> =
|
|
284
|
-
| ({
|
|
285
|
-
AND?: DBFieldFiltersInner<TDBField>
|
|
286
|
-
OR?: DBFieldFiltersInner<TDBField>
|
|
287
|
-
NOT?: DBFieldFiltersInner<TDBField>
|
|
288
|
-
} & DBFieldFiltersInner<TDBField>)
|
|
289
|
-
| null
|
|
290
|
-
|
|
291
|
-
export type WhereFieldInputArg<TDBField extends DBField, TArg extends GArg<GInputType, any>> = {
|
|
292
|
-
arg: TArg
|
|
293
|
-
} & ResolveFunc<
|
|
294
|
-
FieldInputResolver<
|
|
295
|
-
Exclude<InferValueFromArg<TArg>, undefined>,
|
|
296
|
-
DBFieldFilters<TDBField>,
|
|
297
|
-
any
|
|
298
|
-
// i think this is broken because variance?
|
|
299
|
-
// TDBField extends RelationDBField<infer Mode>
|
|
300
|
-
// ? (
|
|
301
|
-
// input: {
|
|
302
|
-
// many: types.InferValueFromArg<types.Arg<TypesForList['manyRelationWhere']>>;
|
|
303
|
-
// one: types.InferValueFromArg<types.Arg<TypesForList['where']>>;
|
|
304
|
-
// }[Mode]
|
|
305
|
-
// ) => Promise<any>
|
|
306
|
-
// : undefined
|
|
307
|
-
>
|
|
308
|
-
>
|
|
309
|
-
|
|
310
|
-
export type UpdateFieldInputArg<TDBField extends DBField, TArg extends GArg<GInputType, any>> = {
|
|
311
|
-
arg: TArg
|
|
312
|
-
} & ResolveFunc<
|
|
313
|
-
FieldInputResolver<
|
|
314
|
-
InferValueFromArg<TArg>,
|
|
315
|
-
DBFieldToInputValue<TDBField>,
|
|
316
|
-
any
|
|
317
|
-
// i think this is broken because variance?
|
|
318
|
-
// TDBField extends RelationDBField<infer Mode>
|
|
319
|
-
// ? (
|
|
320
|
-
// input: graphql.InferValueFromArg<graphql.Arg<TypesForList['relateTo'][Mode]['create']>>
|
|
321
|
-
// ) => Promise<any>
|
|
322
|
-
// : undefined
|
|
323
|
-
>
|
|
324
|
-
>
|
|
325
|
-
|
|
326
|
-
type CreateFieldInputResolver<Input, TDBField extends DBField> = FieldInputResolver<
|
|
327
|
-
Input,
|
|
328
|
-
DBFieldToInputValue<TDBField>,
|
|
329
|
-
any
|
|
330
|
-
// i think this is broken because variance?
|
|
331
|
-
// TDBField extends RelationDBField<infer Mode>
|
|
332
|
-
// ? (
|
|
333
|
-
// input: graphql.InferValueFromArg<graphql.Arg<TypesForList['relateTo'][Mode]['create']>>
|
|
334
|
-
// ) => Promise<any>
|
|
335
|
-
// : undefined
|
|
336
|
-
>
|
|
337
|
-
|
|
338
|
-
export type CreateFieldInputArg<
|
|
339
|
-
TDBField extends DBField,
|
|
340
|
-
TArg extends GArg<GInputType, any> | undefined,
|
|
341
|
-
> = {
|
|
342
|
-
arg: TArg
|
|
343
|
-
} & (TArg extends GArg<GInputType, any>
|
|
344
|
-
? InferValueFromArg<TArg> extends DBFieldToInputValue<TDBField>
|
|
345
|
-
? {
|
|
346
|
-
resolve?: CreateFieldInputResolver<InferValueFromArg<TArg>, TDBField>
|
|
347
|
-
}
|
|
348
|
-
: {
|
|
349
|
-
resolve: CreateFieldInputResolver<InferValueFromArg<TArg>, TDBField>
|
|
350
|
-
}
|
|
351
|
-
: {
|
|
352
|
-
resolve: CreateFieldInputResolver<undefined, TDBField>
|
|
353
|
-
})
|
|
354
|
-
|
|
355
|
-
type UnwrapMaybePromise<T> = T extends Promise<infer Resolved> ? Resolved : T
|
|
356
|
-
|
|
357
|
-
type ResolveFunc<Func extends (firstArg: any, ...args: any[]) => any> =
|
|
358
|
-
Parameters<Func>[0] extends UnwrapMaybePromise<ReturnType<Func>>
|
|
359
|
-
? { resolve?: Func }
|
|
360
|
-
: { resolve: Func }
|
|
361
|
-
|
|
362
|
-
export type UniqueWhereFieldInputArg<Val, TArg extends GArg<GInputType>> = {
|
|
363
|
-
arg: TArg
|
|
364
|
-
} & ResolveFunc<
|
|
365
|
-
(
|
|
366
|
-
value: Exclude<InferValueFromArg<TArg>, undefined | null>,
|
|
367
|
-
context: NixxieContext
|
|
368
|
-
) => MaybePromise<Val>
|
|
369
|
-
>
|
|
370
|
-
|
|
371
|
-
type FieldTypeOutputField<TDBField extends DBField> = GField<
|
|
372
|
-
{ value: DBFieldToOutputValue<TDBField>; item: BaseItem },
|
|
373
|
-
any,
|
|
374
|
-
GOutputType<NixxieContext>,
|
|
375
|
-
DBFieldToOutputValue<TDBField>,
|
|
376
|
-
NixxieContext
|
|
377
|
-
>
|
|
378
|
-
|
|
379
|
-
export type OrderDirection = 'asc' | 'desc'
|
|
380
|
-
|
|
381
|
-
type DBFieldToOrderByValue<TDBField extends DBField> = TDBField extends ScalarishDBField
|
|
382
|
-
? OrderDirection | undefined
|
|
383
|
-
: TDBField extends MultiDBField<infer Fields>
|
|
384
|
-
? { [Key in keyof Fields]: DBFieldToOrderByValue<Fields[Key]> }
|
|
385
|
-
: undefined
|
|
386
|
-
|
|
387
|
-
export type FieldTypeWithoutDBField<
|
|
388
|
-
TDBField extends DBField = DBField,
|
|
389
|
-
CreateArg extends GArg<GInputType> | undefined = GArg<GInputType> | undefined,
|
|
390
|
-
UpdateArg extends GArg<GInputType> = GArg<GInputType>,
|
|
391
|
-
UniqueWhereArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
392
|
-
OrderByArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
393
|
-
FilterArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
394
|
-
ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo,
|
|
395
|
-
FieldTypeInfo extends BaseFieldTypeInfo = BaseFieldTypeInfo,
|
|
396
|
-
> = {
|
|
397
|
-
input?: {
|
|
398
|
-
uniqueWhere?: UniqueWhereFieldInputArg<DBFieldUniqueWhere<TDBField>, UniqueWhereArg>
|
|
399
|
-
where?: WhereFieldInputArg<TDBField, FilterArg>
|
|
400
|
-
create?: CreateFieldInputArg<TDBField, CreateArg>
|
|
401
|
-
update?: UpdateFieldInputArg<TDBField, UpdateArg>
|
|
402
|
-
orderBy?: OrderByFieldInputArg<DBFieldToOrderByValue<TDBField>, OrderByArg>
|
|
403
|
-
}
|
|
404
|
-
output: FieldTypeOutputField<TDBField>
|
|
405
|
-
views: string
|
|
406
|
-
extraOutputFields?: Record<string, FieldTypeOutputField<TDBField>>
|
|
407
|
-
getAdminMeta?: () => JSONValue
|
|
408
|
-
unreferencedConcreteInterfaceImplementations?: readonly g<typeof g.object<any>>[]
|
|
409
|
-
|
|
410
|
-
} & CommonFieldConfig<ListTypeInfo, FieldTypeInfo>
|
|
411
|
-
|
|
412
|
-
type AnyInputObj = GInputObjectType<Record<string, GArg<GInputType>>>
|
|
413
|
-
|
|
414
|
-
export type GraphQLTypesForList<ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo> = {
|
|
415
|
-
create: AnyInputObj | typeof g.Empty
|
|
416
|
-
update: AnyInputObj | typeof g.Empty
|
|
417
|
-
uniqueWhere: GInputObjectType<{
|
|
418
|
-
id: GArg<typeof g.ID>
|
|
419
|
-
[key: string]: GArg<GNullableInputType>
|
|
420
|
-
}>
|
|
421
|
-
where: AnyInputObj
|
|
422
|
-
orderBy: AnyInputObj
|
|
423
|
-
output: GObjectType<ListTypeInfo['item'], NixxieContext<ListTypeInfo['all']>>
|
|
424
|
-
findManyArgs: FindManyArgs
|
|
425
|
-
relateTo: {
|
|
426
|
-
one: {
|
|
427
|
-
create: GInputObjectType<{
|
|
428
|
-
create?: GArg<GraphQLTypesForList<ListTypeInfo>['create']>
|
|
429
|
-
connect: GArg<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>
|
|
430
|
-
}>
|
|
431
|
-
update: GInputObjectType<{
|
|
432
|
-
create?: GArg<GraphQLTypesForList<ListTypeInfo>['create']>
|
|
433
|
-
connect: GArg<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>
|
|
434
|
-
disconnect: GArg<typeof g.Boolean>
|
|
435
|
-
}>
|
|
436
|
-
}
|
|
437
|
-
many: {
|
|
438
|
-
where: GInputObjectType<{
|
|
439
|
-
every: GArg<AnyInputObj>
|
|
440
|
-
some: GArg<AnyInputObj>
|
|
441
|
-
none: GArg<AnyInputObj>
|
|
442
|
-
}>
|
|
443
|
-
create: GInputObjectType<{
|
|
444
|
-
create?: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['create']>>>
|
|
445
|
-
connect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
446
|
-
set: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
447
|
-
}>
|
|
448
|
-
update: GInputObjectType<{
|
|
449
|
-
create?: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['create']>>>
|
|
450
|
-
connect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
451
|
-
disconnect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
452
|
-
set: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
453
|
-
}>
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
export type FindManyArgs = {
|
|
459
|
-
where: GArg<GNonNull<GraphQLTypesForList['where']>, true>
|
|
460
|
-
orderBy: GArg<GNonNull<GList<GNonNull<GraphQLTypesForList['orderBy']>>>, true>
|
|
461
|
-
take: GArg<typeof g.Int>
|
|
462
|
-
skip: GArg<GNonNull<typeof g.Int>, true>
|
|
463
|
-
cursor: GArg<GraphQLTypesForList['uniqueWhere']>
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
export type FindManyArgsValue = InferValueFromArgs<FindManyArgs>
|
|
467
|
-
|
|
468
|
-
// fieldType(dbField)(fieldInfo) => { ...fieldInfo, dbField };
|
|
469
|
-
export function fieldType<TDBField extends DBField, ListTypeInfo extends BaseListTypeInfo>(
|
|
470
|
-
dbField: TDBField
|
|
471
|
-
) {
|
|
472
|
-
return function fieldTypeWrapper<
|
|
473
|
-
CreateArg extends GArg<GInputType> | undefined,
|
|
474
|
-
UpdateArg extends GArg<GInputType>,
|
|
475
|
-
UniqueWhereArg extends GArg<GNullableInputType, false>,
|
|
476
|
-
OrderByArg extends GArg<GNullableInputType, false>,
|
|
477
|
-
FilterArg extends GArg<GNullableInputType, false>,
|
|
478
|
-
>(
|
|
479
|
-
graphQLInfo: FieldTypeWithoutDBField<
|
|
480
|
-
TDBField,
|
|
481
|
-
CreateArg,
|
|
482
|
-
UpdateArg,
|
|
483
|
-
UniqueWhereArg,
|
|
484
|
-
OrderByArg,
|
|
485
|
-
FilterArg,
|
|
486
|
-
ListTypeInfo
|
|
487
|
-
>
|
|
488
|
-
): NextFieldType<
|
|
489
|
-
DBField,
|
|
490
|
-
GArg<GInputType> | undefined,
|
|
491
|
-
GArg<GInputType>,
|
|
492
|
-
GArg<GNullableInputType, false>,
|
|
493
|
-
GArg<GNullableInputType, false>,
|
|
494
|
-
GArg<GNullableInputType, false>,
|
|
495
|
-
any
|
|
496
|
-
> {
|
|
497
|
-
return { ...graphQLInfo, dbField } as any
|
|
498
|
-
}
|
|
499
|
-
}
|
|
1
|
+
import Decimal from 'decimal.js'
|
|
2
|
+
import { g } from '../types/schema'
|
|
3
|
+
import type { BaseListTypeInfo } from './type-info'
|
|
4
|
+
import type { BaseFieldTypeInfo, CommonFieldConfig } from './config'
|
|
5
|
+
import type { DatabaseProvider } from './core'
|
|
6
|
+
import type {
|
|
7
|
+
GArg,
|
|
8
|
+
GInputType,
|
|
9
|
+
GNullableInputType,
|
|
10
|
+
InferValueFromArg,
|
|
11
|
+
GField,
|
|
12
|
+
GOutputType,
|
|
13
|
+
GInputObjectType,
|
|
14
|
+
GList,
|
|
15
|
+
GNonNull,
|
|
16
|
+
InferValueFromArgs,
|
|
17
|
+
GObjectType,
|
|
18
|
+
InferValueFromInputType,
|
|
19
|
+
} from '@graphql-ts/schema'
|
|
20
|
+
import type { JSONValue, NixxieContext, MaybePromise } from '.'
|
|
21
|
+
import type { filters } from '../fields/filters'
|
|
22
|
+
|
|
23
|
+
export { Decimal }
|
|
24
|
+
|
|
25
|
+
export type BaseItem = { id: { toString(): string }; [key: string]: unknown }
|
|
26
|
+
|
|
27
|
+
export type ListGraphQLTypes<ListTypeInfo extends BaseListTypeInfo> = {
|
|
28
|
+
types: GraphQLTypesForList<ListTypeInfo>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type FieldData<ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo> = {
|
|
32
|
+
lists: {
|
|
33
|
+
[Key in keyof ListTypeInfo['all']['lists']]: ListGraphQLTypes<ListTypeInfo['all']['lists'][Key]>
|
|
34
|
+
}
|
|
35
|
+
provider: DatabaseProvider
|
|
36
|
+
listKey: ListTypeInfo['key']
|
|
37
|
+
fieldKey: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type ScalarNames = Exclude<keyof (typeof filters)[DatabaseProvider], 'enum'>
|
|
41
|
+
|
|
42
|
+
export type SimpleFieldTypeInfo<Scalar extends ScalarNames> = {
|
|
43
|
+
item: ScalarPrismaTypes[Scalar] | null
|
|
44
|
+
inputs: {
|
|
45
|
+
create: ScalarPrismaTypes[Scalar] | null | undefined
|
|
46
|
+
update: ScalarPrismaTypes[Scalar] | null | undefined
|
|
47
|
+
where: InferValueFromInputType<(typeof filters)[DatabaseProvider][Scalar]['required']> | null
|
|
48
|
+
uniqueWhere: ScalarPrismaTypes[Scalar] | null | undefined
|
|
49
|
+
orderBy: 'asc' | 'desc' | null
|
|
50
|
+
}
|
|
51
|
+
prisma: {
|
|
52
|
+
create:
|
|
53
|
+
| ScalarPrismaTypes[Scalar]
|
|
54
|
+
| { set?: ScalarPrismaTypes[Scalar] | null }
|
|
55
|
+
| null
|
|
56
|
+
| undefined
|
|
57
|
+
update:
|
|
58
|
+
| ScalarPrismaTypes[Scalar]
|
|
59
|
+
| { set?: ScalarPrismaTypes[Scalar] | null }
|
|
60
|
+
| null
|
|
61
|
+
| undefined
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export type FieldTypeFunc<ListTypeInfo extends BaseListTypeInfo> = (
|
|
66
|
+
data: FieldData<ListTypeInfo>
|
|
67
|
+
) => NextFieldType<
|
|
68
|
+
DBField,
|
|
69
|
+
GArg<GInputType> | undefined,
|
|
70
|
+
GArg<GInputType>,
|
|
71
|
+
GArg<GNullableInputType, false>,
|
|
72
|
+
GArg<GNullableInputType, false>,
|
|
73
|
+
GArg<GNullableInputType, false>,
|
|
74
|
+
ListTypeInfo
|
|
75
|
+
>
|
|
76
|
+
|
|
77
|
+
export type NextFieldType<
|
|
78
|
+
TDBField extends DBField = DBField,
|
|
79
|
+
CreateArg extends GArg<GInputType> | undefined = GArg<GInputType> | undefined,
|
|
80
|
+
UpdateArg extends GArg<GInputType> = GArg<GInputType>,
|
|
81
|
+
UniqueWhereArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
82
|
+
OrderByArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
83
|
+
FilterArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
84
|
+
ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo,
|
|
85
|
+
> = {
|
|
86
|
+
dbField: TDBField
|
|
87
|
+
} & FieldTypeWithoutDBField<
|
|
88
|
+
TDBField,
|
|
89
|
+
CreateArg,
|
|
90
|
+
UpdateArg,
|
|
91
|
+
UniqueWhereArg,
|
|
92
|
+
OrderByArg,
|
|
93
|
+
FilterArg,
|
|
94
|
+
ListTypeInfo
|
|
95
|
+
>
|
|
96
|
+
|
|
97
|
+
export type ScalarPrismaTypes = {
|
|
98
|
+
String: string
|
|
99
|
+
Boolean: boolean
|
|
100
|
+
Int: number
|
|
101
|
+
Float: number
|
|
102
|
+
DateTime: Date
|
|
103
|
+
BigInt: bigint
|
|
104
|
+
Json: JSONValue
|
|
105
|
+
Decimal: Decimal
|
|
106
|
+
Bytes: Uint8Array
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
type Literal<T> = {
|
|
110
|
+
kind: 'literal'
|
|
111
|
+
value: T
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export type ScalarDBFieldDefault<
|
|
115
|
+
Scalar extends keyof ScalarPrismaTypes = keyof ScalarPrismaTypes,
|
|
116
|
+
Mode extends 'required' | 'many' | 'optional' = 'required' | 'many' | 'optional',
|
|
117
|
+
> = Mode extends 'many'
|
|
118
|
+
? never
|
|
119
|
+
:
|
|
120
|
+
| {
|
|
121
|
+
String:
|
|
122
|
+
| Literal<string>
|
|
123
|
+
| { kind: 'uuid'; version?: 4 | 7 }
|
|
124
|
+
| { kind: 'cuid'; version?: 1 | 2 }
|
|
125
|
+
| { kind: 'ulid' }
|
|
126
|
+
| { kind: 'nanoid'; length?: number }
|
|
127
|
+
| { kind: 'random'; bytes: number; encoding: 'hex' | 'base64url' }
|
|
128
|
+
Boolean: Literal<boolean>
|
|
129
|
+
Json: Literal<string>
|
|
130
|
+
Float: Literal<number>
|
|
131
|
+
Int: Literal<number> | { kind: 'autoincrement' }
|
|
132
|
+
BigInt: Literal<bigint> | { kind: 'autoincrement' }
|
|
133
|
+
DateTime: Literal<string> | { kind: 'now' }
|
|
134
|
+
Decimal: Literal<string>
|
|
135
|
+
Bytes: Literal<Uint8Array>
|
|
136
|
+
}[Scalar]
|
|
137
|
+
| { kind: 'dbgenerated'; value: string }
|
|
138
|
+
|
|
139
|
+
export type ScalarDBField<
|
|
140
|
+
Scalar extends keyof ScalarPrismaTypes,
|
|
141
|
+
Mode extends 'required' | 'many' | 'optional',
|
|
142
|
+
> = {
|
|
143
|
+
kind: 'scalar'
|
|
144
|
+
scalar: Scalar
|
|
145
|
+
mode: Mode
|
|
146
|
+
default?: ScalarDBFieldDefault<Scalar, Mode> | undefined
|
|
147
|
+
extendPrismaSchema?: (field: string) => string
|
|
148
|
+
index?: 'unique' | 'index' | undefined
|
|
149
|
+
|
|
150
|
+
map?: string
|
|
151
|
+
nativeType?: string
|
|
152
|
+
updatedAt?: Scalar extends 'DateTime' ? boolean : never
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export type RelationDBField<Mode extends 'many' | 'one'> = {
|
|
156
|
+
kind: 'relation'
|
|
157
|
+
mode: Mode
|
|
158
|
+
extendPrismaSchema?: (field: string) => string
|
|
159
|
+
|
|
160
|
+
list: string
|
|
161
|
+
field?: string
|
|
162
|
+
foreignKey?: { one: true | { map: string }; many: undefined }[Mode]
|
|
163
|
+
relationName?: { one: undefined; many: string }[Mode]
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export type EnumDBField<Value extends string, Mode extends 'required' | 'many' | 'optional'> = {
|
|
167
|
+
kind: 'enum'
|
|
168
|
+
name: string
|
|
169
|
+
mode: Mode
|
|
170
|
+
default?: { kind: 'literal'; value: Value }
|
|
171
|
+
extendPrismaSchema?: (field: string) => string
|
|
172
|
+
index?: 'unique' | 'index'
|
|
173
|
+
|
|
174
|
+
map?: string
|
|
175
|
+
values: readonly Value[]
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export const orderDirectionEnum = g.enum({
|
|
179
|
+
name: 'OrderDirection',
|
|
180
|
+
values: g.enumValues(['asc', 'desc']),
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
export const QueryMode = g.enum({
|
|
184
|
+
name: 'QueryMode',
|
|
185
|
+
values: g.enumValues(['default', 'insensitive']),
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
export type NoDBField = { kind: 'none' }
|
|
189
|
+
|
|
190
|
+
// TODO: merge
|
|
191
|
+
export type ScalarishDBField =
|
|
192
|
+
| ScalarDBField<keyof ScalarPrismaTypes, 'required' | 'many' | 'optional'>
|
|
193
|
+
| EnumDBField<string, 'required' | 'many' | 'optional'>
|
|
194
|
+
|
|
195
|
+
export type RealDBField = ScalarishDBField | RelationDBField<'many' | 'one'>
|
|
196
|
+
|
|
197
|
+
export type MultiDBField<Fields extends Record<string, ScalarishDBField>> = {
|
|
198
|
+
kind: 'multi'
|
|
199
|
+
fields: Fields
|
|
200
|
+
extendPrismaSchema?: (field: string) => string
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export type DBField = RealDBField | NoDBField | MultiDBField<Record<string, ScalarishDBField>>
|
|
204
|
+
|
|
205
|
+
// TODO: this isn't right for create
|
|
206
|
+
// for create though, db level defaults need to be taken into account for when to not allow undefined
|
|
207
|
+
type DBFieldToInputValue<TDBField extends DBField> =
|
|
208
|
+
TDBField extends ScalarDBField<infer Scalar, infer Mode>
|
|
209
|
+
? {
|
|
210
|
+
optional: ScalarPrismaTypes[Scalar] | null | undefined
|
|
211
|
+
required: ScalarPrismaTypes[Scalar] | undefined
|
|
212
|
+
many: readonly ScalarPrismaTypes[Scalar][] | undefined
|
|
213
|
+
}[Mode]
|
|
214
|
+
: TDBField extends RelationDBField<'many' | 'one'>
|
|
215
|
+
? { connect?: object; disconnect?: boolean } | undefined
|
|
216
|
+
: TDBField extends EnumDBField<infer Value, infer Mode>
|
|
217
|
+
? {
|
|
218
|
+
optional: Value | null | undefined
|
|
219
|
+
required: Value | undefined
|
|
220
|
+
many: readonly Value[] | undefined
|
|
221
|
+
}[Mode]
|
|
222
|
+
: TDBField extends NoDBField
|
|
223
|
+
? undefined
|
|
224
|
+
: TDBField extends MultiDBField<infer Fields>
|
|
225
|
+
? // note: this is very intentionally not optional and DBFieldToInputValue will add | undefined to force people to explicitly show what they are not setting
|
|
226
|
+
{ [Key in keyof Fields]: DBFieldToInputValue<Fields[Key]> }
|
|
227
|
+
: never
|
|
228
|
+
|
|
229
|
+
type DBFieldUniqueWhere<TDBField extends DBField> =
|
|
230
|
+
TDBField extends ScalarDBField<infer Scalar, 'optional' | 'required'>
|
|
231
|
+
? Scalar extends 'String' | 'Int'
|
|
232
|
+
? {
|
|
233
|
+
String: string
|
|
234
|
+
Int: number
|
|
235
|
+
}[Scalar]
|
|
236
|
+
: any
|
|
237
|
+
: any
|
|
238
|
+
|
|
239
|
+
type DBFieldToOutputValue<TDBField extends DBField> =
|
|
240
|
+
TDBField extends ScalarDBField<infer Scalar, infer Mode>
|
|
241
|
+
? {
|
|
242
|
+
optional: ScalarPrismaTypes[Scalar] | null
|
|
243
|
+
required: ScalarPrismaTypes[Scalar]
|
|
244
|
+
many: readonly ScalarPrismaTypes[Scalar][]
|
|
245
|
+
}[Mode]
|
|
246
|
+
: TDBField extends RelationDBField<infer Mode>
|
|
247
|
+
? {
|
|
248
|
+
one: () => Promise<BaseItem>
|
|
249
|
+
many: {
|
|
250
|
+
findMany(args: FindManyArgsValue): Promise<BaseItem[]>
|
|
251
|
+
count(args: { where: FindManyArgsValue['where'] }): Promise<number>
|
|
252
|
+
}
|
|
253
|
+
}[Mode]
|
|
254
|
+
: TDBField extends EnumDBField<infer Value, infer Mode>
|
|
255
|
+
? {
|
|
256
|
+
optional: Value | null
|
|
257
|
+
required: Value
|
|
258
|
+
many: readonly Value[]
|
|
259
|
+
}[Mode]
|
|
260
|
+
: TDBField extends NoDBField
|
|
261
|
+
? undefined
|
|
262
|
+
: TDBField extends MultiDBField<infer Fields>
|
|
263
|
+
? { [Key in keyof Fields]: DBFieldToOutputValue<Fields[Key]> }
|
|
264
|
+
: never
|
|
265
|
+
|
|
266
|
+
export type OrderByFieldInputArg<Val, TArg extends GArg<GNullableInputType>> = {
|
|
267
|
+
arg: TArg
|
|
268
|
+
} & ResolveFunc<
|
|
269
|
+
(
|
|
270
|
+
value: Exclude<InferValueFromArg<TArg>, null | undefined>,
|
|
271
|
+
context: NixxieContext
|
|
272
|
+
) => MaybePromise<Val>
|
|
273
|
+
>
|
|
274
|
+
|
|
275
|
+
type FieldInputResolver<Input, Output, RelationshipInputResolver> = (
|
|
276
|
+
value: Input,
|
|
277
|
+
context: NixxieContext,
|
|
278
|
+
relationshipInputResolver: RelationshipInputResolver
|
|
279
|
+
) => MaybePromise<Output>
|
|
280
|
+
|
|
281
|
+
type DBFieldFiltersInner<TDBField extends DBField> = Record<string, any>
|
|
282
|
+
|
|
283
|
+
type DBFieldFilters<TDBField extends DBField> =
|
|
284
|
+
| ({
|
|
285
|
+
AND?: DBFieldFiltersInner<TDBField>
|
|
286
|
+
OR?: DBFieldFiltersInner<TDBField>
|
|
287
|
+
NOT?: DBFieldFiltersInner<TDBField>
|
|
288
|
+
} & DBFieldFiltersInner<TDBField>)
|
|
289
|
+
| null
|
|
290
|
+
|
|
291
|
+
export type WhereFieldInputArg<TDBField extends DBField, TArg extends GArg<GInputType, any>> = {
|
|
292
|
+
arg: TArg
|
|
293
|
+
} & ResolveFunc<
|
|
294
|
+
FieldInputResolver<
|
|
295
|
+
Exclude<InferValueFromArg<TArg>, undefined>,
|
|
296
|
+
DBFieldFilters<TDBField>,
|
|
297
|
+
any
|
|
298
|
+
// i think this is broken because variance?
|
|
299
|
+
// TDBField extends RelationDBField<infer Mode>
|
|
300
|
+
// ? (
|
|
301
|
+
// input: {
|
|
302
|
+
// many: types.InferValueFromArg<types.Arg<TypesForList['manyRelationWhere']>>;
|
|
303
|
+
// one: types.InferValueFromArg<types.Arg<TypesForList['where']>>;
|
|
304
|
+
// }[Mode]
|
|
305
|
+
// ) => Promise<any>
|
|
306
|
+
// : undefined
|
|
307
|
+
>
|
|
308
|
+
>
|
|
309
|
+
|
|
310
|
+
export type UpdateFieldInputArg<TDBField extends DBField, TArg extends GArg<GInputType, any>> = {
|
|
311
|
+
arg: TArg
|
|
312
|
+
} & ResolveFunc<
|
|
313
|
+
FieldInputResolver<
|
|
314
|
+
InferValueFromArg<TArg>,
|
|
315
|
+
DBFieldToInputValue<TDBField>,
|
|
316
|
+
any
|
|
317
|
+
// i think this is broken because variance?
|
|
318
|
+
// TDBField extends RelationDBField<infer Mode>
|
|
319
|
+
// ? (
|
|
320
|
+
// input: graphql.InferValueFromArg<graphql.Arg<TypesForList['relateTo'][Mode]['create']>>
|
|
321
|
+
// ) => Promise<any>
|
|
322
|
+
// : undefined
|
|
323
|
+
>
|
|
324
|
+
>
|
|
325
|
+
|
|
326
|
+
type CreateFieldInputResolver<Input, TDBField extends DBField> = FieldInputResolver<
|
|
327
|
+
Input,
|
|
328
|
+
DBFieldToInputValue<TDBField>,
|
|
329
|
+
any
|
|
330
|
+
// i think this is broken because variance?
|
|
331
|
+
// TDBField extends RelationDBField<infer Mode>
|
|
332
|
+
// ? (
|
|
333
|
+
// input: graphql.InferValueFromArg<graphql.Arg<TypesForList['relateTo'][Mode]['create']>>
|
|
334
|
+
// ) => Promise<any>
|
|
335
|
+
// : undefined
|
|
336
|
+
>
|
|
337
|
+
|
|
338
|
+
export type CreateFieldInputArg<
|
|
339
|
+
TDBField extends DBField,
|
|
340
|
+
TArg extends GArg<GInputType, any> | undefined,
|
|
341
|
+
> = {
|
|
342
|
+
arg: TArg
|
|
343
|
+
} & (TArg extends GArg<GInputType, any>
|
|
344
|
+
? InferValueFromArg<TArg> extends DBFieldToInputValue<TDBField>
|
|
345
|
+
? {
|
|
346
|
+
resolve?: CreateFieldInputResolver<InferValueFromArg<TArg>, TDBField>
|
|
347
|
+
}
|
|
348
|
+
: {
|
|
349
|
+
resolve: CreateFieldInputResolver<InferValueFromArg<TArg>, TDBField>
|
|
350
|
+
}
|
|
351
|
+
: {
|
|
352
|
+
resolve: CreateFieldInputResolver<undefined, TDBField>
|
|
353
|
+
})
|
|
354
|
+
|
|
355
|
+
type UnwrapMaybePromise<T> = T extends Promise<infer Resolved> ? Resolved : T
|
|
356
|
+
|
|
357
|
+
type ResolveFunc<Func extends (firstArg: any, ...args: any[]) => any> =
|
|
358
|
+
Parameters<Func>[0] extends UnwrapMaybePromise<ReturnType<Func>>
|
|
359
|
+
? { resolve?: Func }
|
|
360
|
+
: { resolve: Func }
|
|
361
|
+
|
|
362
|
+
export type UniqueWhereFieldInputArg<Val, TArg extends GArg<GInputType>> = {
|
|
363
|
+
arg: TArg
|
|
364
|
+
} & ResolveFunc<
|
|
365
|
+
(
|
|
366
|
+
value: Exclude<InferValueFromArg<TArg>, undefined | null>,
|
|
367
|
+
context: NixxieContext
|
|
368
|
+
) => MaybePromise<Val>
|
|
369
|
+
>
|
|
370
|
+
|
|
371
|
+
type FieldTypeOutputField<TDBField extends DBField> = GField<
|
|
372
|
+
{ value: DBFieldToOutputValue<TDBField>; item: BaseItem },
|
|
373
|
+
any,
|
|
374
|
+
GOutputType<NixxieContext>,
|
|
375
|
+
DBFieldToOutputValue<TDBField>,
|
|
376
|
+
NixxieContext
|
|
377
|
+
>
|
|
378
|
+
|
|
379
|
+
export type OrderDirection = 'asc' | 'desc'
|
|
380
|
+
|
|
381
|
+
type DBFieldToOrderByValue<TDBField extends DBField> = TDBField extends ScalarishDBField
|
|
382
|
+
? OrderDirection | undefined
|
|
383
|
+
: TDBField extends MultiDBField<infer Fields>
|
|
384
|
+
? { [Key in keyof Fields]: DBFieldToOrderByValue<Fields[Key]> }
|
|
385
|
+
: undefined
|
|
386
|
+
|
|
387
|
+
export type FieldTypeWithoutDBField<
|
|
388
|
+
TDBField extends DBField = DBField,
|
|
389
|
+
CreateArg extends GArg<GInputType> | undefined = GArg<GInputType> | undefined,
|
|
390
|
+
UpdateArg extends GArg<GInputType> = GArg<GInputType>,
|
|
391
|
+
UniqueWhereArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
392
|
+
OrderByArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
393
|
+
FilterArg extends GArg<GNullableInputType, false> = GArg<GNullableInputType, false>,
|
|
394
|
+
ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo,
|
|
395
|
+
FieldTypeInfo extends BaseFieldTypeInfo = BaseFieldTypeInfo,
|
|
396
|
+
> = {
|
|
397
|
+
input?: {
|
|
398
|
+
uniqueWhere?: UniqueWhereFieldInputArg<DBFieldUniqueWhere<TDBField>, UniqueWhereArg>
|
|
399
|
+
where?: WhereFieldInputArg<TDBField, FilterArg>
|
|
400
|
+
create?: CreateFieldInputArg<TDBField, CreateArg>
|
|
401
|
+
update?: UpdateFieldInputArg<TDBField, UpdateArg>
|
|
402
|
+
orderBy?: OrderByFieldInputArg<DBFieldToOrderByValue<TDBField>, OrderByArg>
|
|
403
|
+
}
|
|
404
|
+
output: FieldTypeOutputField<TDBField>
|
|
405
|
+
views: string
|
|
406
|
+
extraOutputFields?: Record<string, FieldTypeOutputField<TDBField>>
|
|
407
|
+
getAdminMeta?: () => JSONValue
|
|
408
|
+
unreferencedConcreteInterfaceImplementations?: readonly g<typeof g.object<any>>[]
|
|
409
|
+
__nxTelemetryFieldTypeName?: string
|
|
410
|
+
} & CommonFieldConfig<ListTypeInfo, FieldTypeInfo>
|
|
411
|
+
|
|
412
|
+
type AnyInputObj = GInputObjectType<Record<string, GArg<GInputType>>>
|
|
413
|
+
|
|
414
|
+
export type GraphQLTypesForList<ListTypeInfo extends BaseListTypeInfo = BaseListTypeInfo> = {
|
|
415
|
+
create: AnyInputObj | typeof g.Empty
|
|
416
|
+
update: AnyInputObj | typeof g.Empty
|
|
417
|
+
uniqueWhere: GInputObjectType<{
|
|
418
|
+
id: GArg<typeof g.ID>
|
|
419
|
+
[key: string]: GArg<GNullableInputType>
|
|
420
|
+
}>
|
|
421
|
+
where: AnyInputObj
|
|
422
|
+
orderBy: AnyInputObj
|
|
423
|
+
output: GObjectType<ListTypeInfo['item'], NixxieContext<ListTypeInfo['all']>>
|
|
424
|
+
findManyArgs: FindManyArgs
|
|
425
|
+
relateTo: {
|
|
426
|
+
one: {
|
|
427
|
+
create: GInputObjectType<{
|
|
428
|
+
create?: GArg<GraphQLTypesForList<ListTypeInfo>['create']>
|
|
429
|
+
connect: GArg<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>
|
|
430
|
+
}>
|
|
431
|
+
update: GInputObjectType<{
|
|
432
|
+
create?: GArg<GraphQLTypesForList<ListTypeInfo>['create']>
|
|
433
|
+
connect: GArg<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>
|
|
434
|
+
disconnect: GArg<typeof g.Boolean>
|
|
435
|
+
}>
|
|
436
|
+
}
|
|
437
|
+
many: {
|
|
438
|
+
where: GInputObjectType<{
|
|
439
|
+
every: GArg<AnyInputObj>
|
|
440
|
+
some: GArg<AnyInputObj>
|
|
441
|
+
none: GArg<AnyInputObj>
|
|
442
|
+
}>
|
|
443
|
+
create: GInputObjectType<{
|
|
444
|
+
create?: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['create']>>>
|
|
445
|
+
connect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
446
|
+
set: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
447
|
+
}>
|
|
448
|
+
update: GInputObjectType<{
|
|
449
|
+
create?: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['create']>>>
|
|
450
|
+
connect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
451
|
+
disconnect: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
452
|
+
set: GArg<GList<GNonNull<GraphQLTypesForList<ListTypeInfo>['uniqueWhere']>>>
|
|
453
|
+
}>
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
export type FindManyArgs = {
|
|
459
|
+
where: GArg<GNonNull<GraphQLTypesForList['where']>, true>
|
|
460
|
+
orderBy: GArg<GNonNull<GList<GNonNull<GraphQLTypesForList['orderBy']>>>, true>
|
|
461
|
+
take: GArg<typeof g.Int>
|
|
462
|
+
skip: GArg<GNonNull<typeof g.Int>, true>
|
|
463
|
+
cursor: GArg<GraphQLTypesForList['uniqueWhere']>
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
export type FindManyArgsValue = InferValueFromArgs<FindManyArgs>
|
|
467
|
+
|
|
468
|
+
// fieldType(dbField)(fieldInfo) => { ...fieldInfo, dbField };
|
|
469
|
+
export function fieldType<TDBField extends DBField, ListTypeInfo extends BaseListTypeInfo>(
|
|
470
|
+
dbField: TDBField
|
|
471
|
+
) {
|
|
472
|
+
return function fieldTypeWrapper<
|
|
473
|
+
CreateArg extends GArg<GInputType> | undefined,
|
|
474
|
+
UpdateArg extends GArg<GInputType>,
|
|
475
|
+
UniqueWhereArg extends GArg<GNullableInputType, false>,
|
|
476
|
+
OrderByArg extends GArg<GNullableInputType, false>,
|
|
477
|
+
FilterArg extends GArg<GNullableInputType, false>,
|
|
478
|
+
>(
|
|
479
|
+
graphQLInfo: FieldTypeWithoutDBField<
|
|
480
|
+
TDBField,
|
|
481
|
+
CreateArg,
|
|
482
|
+
UpdateArg,
|
|
483
|
+
UniqueWhereArg,
|
|
484
|
+
OrderByArg,
|
|
485
|
+
FilterArg,
|
|
486
|
+
ListTypeInfo
|
|
487
|
+
>
|
|
488
|
+
): NextFieldType<
|
|
489
|
+
DBField,
|
|
490
|
+
GArg<GInputType> | undefined,
|
|
491
|
+
GArg<GInputType>,
|
|
492
|
+
GArg<GNullableInputType, false>,
|
|
493
|
+
GArg<GNullableInputType, false>,
|
|
494
|
+
GArg<GNullableInputType, false>,
|
|
495
|
+
any
|
|
496
|
+
> {
|
|
497
|
+
return { ...graphQLInfo, dbField } as any
|
|
498
|
+
}
|
|
499
|
+
}
|