@vantreeseba/drizzle-graphql 4.2.0 → 5.0.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/README.md +60 -4
- package/dist/README.md +60 -4
- package/dist/index.cjs +645 -122
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +92 -5
- package/dist/index.d.ts +92 -5
- package/dist/index.js +658 -135
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -55,6 +55,12 @@ type FilterColumnOperatorsCore<TColumn extends Column, TColType = GetColumnGqlDa
|
|
|
55
55
|
notLike: string;
|
|
56
56
|
ilike: string;
|
|
57
57
|
notIlike: string;
|
|
58
|
+
startsWith: string;
|
|
59
|
+
endsWith: string;
|
|
60
|
+
contains: string;
|
|
61
|
+
iStartsWith: string;
|
|
62
|
+
iEndsWith: string;
|
|
63
|
+
iContains: string;
|
|
58
64
|
inArray: Array<TColType>;
|
|
59
65
|
notInArray: Array<TColType>;
|
|
60
66
|
isNull: boolean;
|
|
@@ -64,12 +70,19 @@ type FiltersCore<TTable extends Table> = Partial<{
|
|
|
64
70
|
[Column in keyof TTable['_']['columns']]: FilterColumnOperatorsCore<TTable['_']['columns'][Column]>;
|
|
65
71
|
}>;
|
|
66
72
|
type Filters<TTable extends Table, TFilterType = FiltersCore<TTable>> = TFilterType & {
|
|
67
|
-
OR?: TFilterType[];
|
|
73
|
+
OR?: Filters<TTable, TFilterType>[];
|
|
74
|
+
AND?: Filters<TTable, TFilterType>[];
|
|
75
|
+
NOT?: Filters<TTable, TFilterType>;
|
|
68
76
|
};
|
|
69
77
|
type OrderByArgs<TTable extends Table> = {
|
|
70
78
|
[Key in keyof TTable['_']['columns']]?: {
|
|
71
79
|
direction: 'asc' | 'desc';
|
|
72
80
|
priority: number;
|
|
81
|
+
/**
|
|
82
|
+
* Where NULL values sort. Native NULLS FIRST/LAST on PostgreSQL and SQLite;
|
|
83
|
+
* emulated with an extra `IS NULL` sort key on MySQL.
|
|
84
|
+
*/
|
|
85
|
+
nulls?: 'first' | 'last';
|
|
73
86
|
};
|
|
74
87
|
};
|
|
75
88
|
|
|
@@ -116,7 +129,21 @@ declare const drizzleExecutorKey: unique symbol;
|
|
|
116
129
|
* into a single IN-clause query, eliminating N+1 database round-trips.
|
|
117
130
|
*/
|
|
118
131
|
declare const createRelationResolverFactory: (db: any, tables: Record<string, Table>, filterCtx?: RelationFilterBase) => RelationResolverFactory;
|
|
119
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Compiles an `orderBy` argument into ORDER BY expressions, highest priority first.
|
|
134
|
+
*
|
|
135
|
+
* A key naming one of the table's columns orders by that column. A key naming a to-one
|
|
136
|
+
* relation takes the target table's own OrderBy input and orders by the related row's
|
|
137
|
+
* column(s), compiled as a correlated scalar subquery — reusing the aliased-join machinery
|
|
138
|
+
* the relation filters are built on — so it works identically on all three dialects and
|
|
139
|
+
* inside the relational query builder's aliased CTEs. Priorities share one global space
|
|
140
|
+
* across relation boundaries. Each entry may also carry `nulls: first | last`
|
|
141
|
+
* (see {@link orderExpressions} for how MySQL emulates it).
|
|
142
|
+
*
|
|
143
|
+
* `ctx` supplies the tables and relation map that relation ordering needs; callers whose
|
|
144
|
+
* inputs cannot contain relation keys may omit it.
|
|
145
|
+
*/
|
|
146
|
+
declare const extractOrderBy: <TTable extends Table, TArgs extends OrderByArgs<any> = OrderByArgs<TTable>>(table: TTable, orderArgs: TArgs, ctx?: RelationFilterContext) => SQL[];
|
|
120
147
|
/**
|
|
121
148
|
* Everything `extractFilters` needs to turn a relation key in a `where` argument into a
|
|
122
149
|
* correlated subquery. Omitted by callers that don't generate relation filters, in which case
|
|
@@ -213,6 +240,15 @@ type UpsertArgs<TTable extends Table, isSingle extends boolean> = InsertArgs<TTa
|
|
|
213
240
|
type DeleteArgs<TTable extends Table> = {
|
|
214
241
|
where?: Filters<TTable>;
|
|
215
242
|
};
|
|
243
|
+
/** Arguments of `update<Table>Single` — unlike the plural variant, `where` is required. */
|
|
244
|
+
type UpdateSingleArgs<TTable extends Table> = {
|
|
245
|
+
set: GetRemappedTableUpdateDataType<TTable>;
|
|
246
|
+
where: Filters<TTable>;
|
|
247
|
+
};
|
|
248
|
+
/** Arguments of `delete<Table>Single` — unlike the plural variant, `where` is required. */
|
|
249
|
+
type DeleteSingleArgs<TTable extends Table> = {
|
|
250
|
+
where: Filters<TTable>;
|
|
251
|
+
};
|
|
216
252
|
type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
|
|
217
253
|
[K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]['referencedTableName']> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]['referencedTableName']> extends infer T ? T[keyof T] : never>> : never;
|
|
218
254
|
}> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
|
|
@@ -224,6 +260,11 @@ type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (sourc
|
|
|
224
260
|
/** Resolver for `create<Table>`: an array of rows in, an array of rows out. */
|
|
225
261
|
type InsertArrResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? Array<GetRemappedTableDataType<TTable>> : MutationReturnlessResult>;
|
|
226
262
|
type UpdateResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: UpdateArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
263
|
+
/**
|
|
264
|
+
* Resolver for `update<Table>Single`: `where` required, the single (nullable) affected row
|
|
265
|
+
* out. Throws before writing anything when `where` matches more than one row.
|
|
266
|
+
*/
|
|
267
|
+
type UpdateSingleResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: UpdateSingleArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
227
268
|
/** Resolver for `upsert<Table>Single`. */
|
|
228
269
|
type UpsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<UpsertArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
229
270
|
/** Resolver for `upsert<Table>`. */
|
|
@@ -237,6 +278,11 @@ type AggregateResolver<TTable extends Table> = (source: any, args: {
|
|
|
237
278
|
where?: Filters<TTable>;
|
|
238
279
|
}, context: any, info: GraphQLResolveInfo) => Promise<Record<string, any>>;
|
|
239
280
|
type DeleteResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: DeleteArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
281
|
+
/**
|
|
282
|
+
* Resolver for `delete<Table>Single`: `where` required, the single (nullable) deleted row
|
|
283
|
+
* out. Throws before writing anything when `where` matches more than one row.
|
|
284
|
+
*/
|
|
285
|
+
type DeleteSingleResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: DeleteSingleArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
240
286
|
type QueriesCore<TSchemaTables extends Record<string, Table>, TSchemaRelations extends Record<string, Relations>, TInputs extends Record<string, GraphQLInputObjectType>, TOutputs extends Record<string, GraphQLObjectType>> = {
|
|
241
287
|
[TName in keyof TSchemaTables as TName extends string ? `${Uncapitalize<TName>}` : never]: TName extends string ? {
|
|
242
288
|
type: GraphQLNonNull<GraphQLList<GraphQLNonNull<TOutputs[`${Capitalize<TName>}SelectItem`]>>>;
|
|
@@ -345,6 +391,19 @@ type MutationsCore<TSchemaTables extends Record<string, Table>, TInputs extends
|
|
|
345
391
|
};
|
|
346
392
|
resolve: UpdateResolver<TSchemaTables[TName], IsReturnless>;
|
|
347
393
|
} : never;
|
|
394
|
+
} & {
|
|
395
|
+
[TName in keyof TSchemaTables as TName extends string ? `update${Capitalize<TName>}Single` : never]: TName extends string ? {
|
|
396
|
+
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : TOutputs[`${Capitalize<TName>}Item`];
|
|
397
|
+
args: {
|
|
398
|
+
set: {
|
|
399
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}UpdateInput`]>;
|
|
400
|
+
};
|
|
401
|
+
where: {
|
|
402
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}Filters`] extends GraphQLInputObjectType ? TInputs[`${Capitalize<TName>}Filters`] : never>;
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
resolve: UpdateSingleResolver<TSchemaTables[TName], IsReturnless>;
|
|
406
|
+
} : never;
|
|
348
407
|
} & {
|
|
349
408
|
[TName in keyof TSchemaTables as TName extends string ? `delete${Capitalize<TName>}` : never]: TName extends string ? {
|
|
350
409
|
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : GraphQLNonNull<GraphQLList<GraphQLNonNull<TOutputs[`${Capitalize<TName>}Item`]>>>;
|
|
@@ -355,6 +414,16 @@ type MutationsCore<TSchemaTables extends Record<string, Table>, TInputs extends
|
|
|
355
414
|
};
|
|
356
415
|
resolve: DeleteResolver<TSchemaTables[TName], IsReturnless>;
|
|
357
416
|
} : never;
|
|
417
|
+
} & {
|
|
418
|
+
[TName in keyof TSchemaTables as TName extends string ? `delete${Capitalize<TName>}Single` : never]: TName extends string ? {
|
|
419
|
+
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : TOutputs[`${Capitalize<TName>}Item`];
|
|
420
|
+
args: {
|
|
421
|
+
where: {
|
|
422
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}Filters`] extends GraphQLInputObjectType ? TInputs[`${Capitalize<TName>}Filters`] : never>;
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
resolve: DeleteSingleResolver<TSchemaTables[TName], IsReturnless>;
|
|
426
|
+
} : never;
|
|
358
427
|
};
|
|
359
428
|
type GeneratedInputs<TSchema extends Record<string, Table>> = {
|
|
360
429
|
[TName in keyof TSchema as TName extends string ? `${Capitalize<TName>}InsertInput` : never]: GraphQLInputObjectType;
|
|
@@ -413,9 +482,9 @@ type SchemaFeatures = {
|
|
|
413
482
|
distinct?: boolean;
|
|
414
483
|
/** `create<Table>` / `create<Table>Single` mutations. @default true */
|
|
415
484
|
insert?: boolean;
|
|
416
|
-
/** `update<Table>` mutations. @default true */
|
|
485
|
+
/** `update<Table>` / `update<Table>Single` mutations. @default true */
|
|
417
486
|
update?: boolean;
|
|
418
|
-
/** `delete<Table>` mutations. @default true */
|
|
487
|
+
/** `delete<Table>` / `delete<Table>Single` mutations. @default true */
|
|
419
488
|
delete?: boolean;
|
|
420
489
|
/**
|
|
421
490
|
* `upsert<Table>` / `upsert<Table>Single` mutations — insert, or update the row that
|
|
@@ -425,6 +494,17 @@ type SchemaFeatures = {
|
|
|
425
494
|
* @default false
|
|
426
495
|
*/
|
|
427
496
|
upsert?: boolean;
|
|
497
|
+
/**
|
|
498
|
+
* Makes `where` non-null on the plural `update<Table>` / `delete<Table>` mutations, and
|
|
499
|
+
* rejects a `where` that collapses to no filters (e.g. `where: {}`), so a schema can rule
|
|
500
|
+
* out unbounded writes at the type level. Off by default for backwards compatibility.
|
|
501
|
+
*
|
|
502
|
+
* The `Single` variants (`update<Table>Single` / `delete<Table>Single`) require a
|
|
503
|
+
* non-empty `where` regardless of this flag.
|
|
504
|
+
*
|
|
505
|
+
* @default false
|
|
506
|
+
*/
|
|
507
|
+
requireWhere?: boolean;
|
|
428
508
|
};
|
|
429
509
|
/**
|
|
430
510
|
* Per-field cost hints for `graphql-query-complexity` (or any estimator that reads
|
|
@@ -643,7 +723,14 @@ type BuildSchemaConfig = {
|
|
|
643
723
|
* for everything else, so a client cannot know which it will get.
|
|
644
724
|
*/
|
|
645
725
|
declare const GraphQLBigIntString: GraphQLScalarType<string, string>;
|
|
726
|
+
/**
|
|
727
|
+
* An arbitrary-precision decimal (`numeric` / `decimal` columns). Always transported as a
|
|
728
|
+
* numeric string, in both directions, so no value is ever silently rounded by JSON's
|
|
729
|
+
* double-precision numbers. Accepts numeric literals and numeric strings on input; rejects
|
|
730
|
+
* non-numeric strings (including 'NaN' and 'Infinity').
|
|
731
|
+
*/
|
|
732
|
+
declare const GraphQLDecimalString: GraphQLScalarType<string, string>;
|
|
646
733
|
|
|
647
734
|
declare const buildSchema: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => GeneratedData<TDbClient>;
|
|
648
735
|
|
|
649
|
-
export { type AggregateResolver, type AnyDrizzleDB, type BuildSchemaConfig, type ComplexityConfig, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedOutputs, GraphQLBigIntString, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type RelationResolverFactory, type SchemaFeatures, type SelectResolver, type SelectSingleResolver, type TableNamedRelations, type UpdateResolver, type UpsertArgs, type UpsertArrResolver, type UpsertConflictArgs, type UpsertResolver, buildSchema, createRelationResolverFactory, defaultErrorMapper, drizzleExecutorKey, extractFilters, extractOrderBy, extractRelationJoinColumns };
|
|
736
|
+
export { type AggregateResolver, type AnyDrizzleDB, type BuildSchemaConfig, type ComplexityConfig, type DeleteResolver, type DeleteSingleResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedOutputs, GraphQLBigIntString, GraphQLDecimalString, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type RelationResolverFactory, type SchemaFeatures, type SelectResolver, type SelectSingleResolver, type TableNamedRelations, type UpdateResolver, type UpdateSingleResolver, type UpsertArgs, type UpsertArrResolver, type UpsertConflictArgs, type UpsertResolver, buildSchema, createRelationResolverFactory, defaultErrorMapper, drizzleExecutorKey, extractFilters, extractOrderBy, extractRelationJoinColumns };
|
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,12 @@ type FilterColumnOperatorsCore<TColumn extends Column, TColType = GetColumnGqlDa
|
|
|
55
55
|
notLike: string;
|
|
56
56
|
ilike: string;
|
|
57
57
|
notIlike: string;
|
|
58
|
+
startsWith: string;
|
|
59
|
+
endsWith: string;
|
|
60
|
+
contains: string;
|
|
61
|
+
iStartsWith: string;
|
|
62
|
+
iEndsWith: string;
|
|
63
|
+
iContains: string;
|
|
58
64
|
inArray: Array<TColType>;
|
|
59
65
|
notInArray: Array<TColType>;
|
|
60
66
|
isNull: boolean;
|
|
@@ -64,12 +70,19 @@ type FiltersCore<TTable extends Table> = Partial<{
|
|
|
64
70
|
[Column in keyof TTable['_']['columns']]: FilterColumnOperatorsCore<TTable['_']['columns'][Column]>;
|
|
65
71
|
}>;
|
|
66
72
|
type Filters<TTable extends Table, TFilterType = FiltersCore<TTable>> = TFilterType & {
|
|
67
|
-
OR?: TFilterType[];
|
|
73
|
+
OR?: Filters<TTable, TFilterType>[];
|
|
74
|
+
AND?: Filters<TTable, TFilterType>[];
|
|
75
|
+
NOT?: Filters<TTable, TFilterType>;
|
|
68
76
|
};
|
|
69
77
|
type OrderByArgs<TTable extends Table> = {
|
|
70
78
|
[Key in keyof TTable['_']['columns']]?: {
|
|
71
79
|
direction: 'asc' | 'desc';
|
|
72
80
|
priority: number;
|
|
81
|
+
/**
|
|
82
|
+
* Where NULL values sort. Native NULLS FIRST/LAST on PostgreSQL and SQLite;
|
|
83
|
+
* emulated with an extra `IS NULL` sort key on MySQL.
|
|
84
|
+
*/
|
|
85
|
+
nulls?: 'first' | 'last';
|
|
73
86
|
};
|
|
74
87
|
};
|
|
75
88
|
|
|
@@ -116,7 +129,21 @@ declare const drizzleExecutorKey: unique symbol;
|
|
|
116
129
|
* into a single IN-clause query, eliminating N+1 database round-trips.
|
|
117
130
|
*/
|
|
118
131
|
declare const createRelationResolverFactory: (db: any, tables: Record<string, Table>, filterCtx?: RelationFilterBase) => RelationResolverFactory;
|
|
119
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Compiles an `orderBy` argument into ORDER BY expressions, highest priority first.
|
|
134
|
+
*
|
|
135
|
+
* A key naming one of the table's columns orders by that column. A key naming a to-one
|
|
136
|
+
* relation takes the target table's own OrderBy input and orders by the related row's
|
|
137
|
+
* column(s), compiled as a correlated scalar subquery — reusing the aliased-join machinery
|
|
138
|
+
* the relation filters are built on — so it works identically on all three dialects and
|
|
139
|
+
* inside the relational query builder's aliased CTEs. Priorities share one global space
|
|
140
|
+
* across relation boundaries. Each entry may also carry `nulls: first | last`
|
|
141
|
+
* (see {@link orderExpressions} for how MySQL emulates it).
|
|
142
|
+
*
|
|
143
|
+
* `ctx` supplies the tables and relation map that relation ordering needs; callers whose
|
|
144
|
+
* inputs cannot contain relation keys may omit it.
|
|
145
|
+
*/
|
|
146
|
+
declare const extractOrderBy: <TTable extends Table, TArgs extends OrderByArgs<any> = OrderByArgs<TTable>>(table: TTable, orderArgs: TArgs, ctx?: RelationFilterContext) => SQL[];
|
|
120
147
|
/**
|
|
121
148
|
* Everything `extractFilters` needs to turn a relation key in a `where` argument into a
|
|
122
149
|
* correlated subquery. Omitted by callers that don't generate relation filters, in which case
|
|
@@ -213,6 +240,15 @@ type UpsertArgs<TTable extends Table, isSingle extends boolean> = InsertArgs<TTa
|
|
|
213
240
|
type DeleteArgs<TTable extends Table> = {
|
|
214
241
|
where?: Filters<TTable>;
|
|
215
242
|
};
|
|
243
|
+
/** Arguments of `update<Table>Single` — unlike the plural variant, `where` is required. */
|
|
244
|
+
type UpdateSingleArgs<TTable extends Table> = {
|
|
245
|
+
set: GetRemappedTableUpdateDataType<TTable>;
|
|
246
|
+
where: Filters<TTable>;
|
|
247
|
+
};
|
|
248
|
+
/** Arguments of `delete<Table>Single` — unlike the plural variant, `where` is required. */
|
|
249
|
+
type DeleteSingleArgs<TTable extends Table> = {
|
|
250
|
+
where: Filters<TTable>;
|
|
251
|
+
};
|
|
216
252
|
type SelectResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<keyof TRelations extends infer RelKey ? RelKey extends string ? Array<GetRemappedTableDataType<TTable> & {
|
|
217
253
|
[K in RelKey]: TRelations[K] extends One<string> ? GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]['referencedTableName']> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<string> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TRelations[K]['referencedTableName']> extends infer T ? T[keyof T] : never>> : never;
|
|
218
254
|
}> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
|
|
@@ -224,6 +260,11 @@ type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (sourc
|
|
|
224
260
|
/** Resolver for `create<Table>`: an array of rows in, an array of rows out. */
|
|
225
261
|
type InsertArrResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, false>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? Array<GetRemappedTableDataType<TTable>> : MutationReturnlessResult>;
|
|
226
262
|
type UpdateResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: UpdateArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
263
|
+
/**
|
|
264
|
+
* Resolver for `update<Table>Single`: `where` required, the single (nullable) affected row
|
|
265
|
+
* out. Throws before writing anything when `where` matches more than one row.
|
|
266
|
+
*/
|
|
267
|
+
type UpdateSingleResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: UpdateSingleArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
227
268
|
/** Resolver for `upsert<Table>Single`. */
|
|
228
269
|
type UpsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<UpsertArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
229
270
|
/** Resolver for `upsert<Table>`. */
|
|
@@ -237,6 +278,11 @@ type AggregateResolver<TTable extends Table> = (source: any, args: {
|
|
|
237
278
|
where?: Filters<TTable>;
|
|
238
279
|
}, context: any, info: GraphQLResolveInfo) => Promise<Record<string, any>>;
|
|
239
280
|
type DeleteResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: DeleteArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
281
|
+
/**
|
|
282
|
+
* Resolver for `delete<Table>Single`: `where` required, the single (nullable) deleted row
|
|
283
|
+
* out. Throws before writing anything when `where` matches more than one row.
|
|
284
|
+
*/
|
|
285
|
+
type DeleteSingleResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: DeleteSingleArgs<TTable>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
|
240
286
|
type QueriesCore<TSchemaTables extends Record<string, Table>, TSchemaRelations extends Record<string, Relations>, TInputs extends Record<string, GraphQLInputObjectType>, TOutputs extends Record<string, GraphQLObjectType>> = {
|
|
241
287
|
[TName in keyof TSchemaTables as TName extends string ? `${Uncapitalize<TName>}` : never]: TName extends string ? {
|
|
242
288
|
type: GraphQLNonNull<GraphQLList<GraphQLNonNull<TOutputs[`${Capitalize<TName>}SelectItem`]>>>;
|
|
@@ -345,6 +391,19 @@ type MutationsCore<TSchemaTables extends Record<string, Table>, TInputs extends
|
|
|
345
391
|
};
|
|
346
392
|
resolve: UpdateResolver<TSchemaTables[TName], IsReturnless>;
|
|
347
393
|
} : never;
|
|
394
|
+
} & {
|
|
395
|
+
[TName in keyof TSchemaTables as TName extends string ? `update${Capitalize<TName>}Single` : never]: TName extends string ? {
|
|
396
|
+
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : TOutputs[`${Capitalize<TName>}Item`];
|
|
397
|
+
args: {
|
|
398
|
+
set: {
|
|
399
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}UpdateInput`]>;
|
|
400
|
+
};
|
|
401
|
+
where: {
|
|
402
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}Filters`] extends GraphQLInputObjectType ? TInputs[`${Capitalize<TName>}Filters`] : never>;
|
|
403
|
+
};
|
|
404
|
+
};
|
|
405
|
+
resolve: UpdateSingleResolver<TSchemaTables[TName], IsReturnless>;
|
|
406
|
+
} : never;
|
|
348
407
|
} & {
|
|
349
408
|
[TName in keyof TSchemaTables as TName extends string ? `delete${Capitalize<TName>}` : never]: TName extends string ? {
|
|
350
409
|
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : GraphQLNonNull<GraphQLList<GraphQLNonNull<TOutputs[`${Capitalize<TName>}Item`]>>>;
|
|
@@ -355,6 +414,16 @@ type MutationsCore<TSchemaTables extends Record<string, Table>, TInputs extends
|
|
|
355
414
|
};
|
|
356
415
|
resolve: DeleteResolver<TSchemaTables[TName], IsReturnless>;
|
|
357
416
|
} : never;
|
|
417
|
+
} & {
|
|
418
|
+
[TName in keyof TSchemaTables as TName extends string ? `delete${Capitalize<TName>}Single` : never]: TName extends string ? {
|
|
419
|
+
type: IsReturnless extends true ? TOutputs['MutationReturn'] extends GraphQLObjectType ? TOutputs['MutationReturn'] : never : TOutputs[`${Capitalize<TName>}Item`];
|
|
420
|
+
args: {
|
|
421
|
+
where: {
|
|
422
|
+
type: GraphQLNonNull<TInputs[`${Capitalize<TName>}Filters`] extends GraphQLInputObjectType ? TInputs[`${Capitalize<TName>}Filters`] : never>;
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
resolve: DeleteSingleResolver<TSchemaTables[TName], IsReturnless>;
|
|
426
|
+
} : never;
|
|
358
427
|
};
|
|
359
428
|
type GeneratedInputs<TSchema extends Record<string, Table>> = {
|
|
360
429
|
[TName in keyof TSchema as TName extends string ? `${Capitalize<TName>}InsertInput` : never]: GraphQLInputObjectType;
|
|
@@ -413,9 +482,9 @@ type SchemaFeatures = {
|
|
|
413
482
|
distinct?: boolean;
|
|
414
483
|
/** `create<Table>` / `create<Table>Single` mutations. @default true */
|
|
415
484
|
insert?: boolean;
|
|
416
|
-
/** `update<Table>` mutations. @default true */
|
|
485
|
+
/** `update<Table>` / `update<Table>Single` mutations. @default true */
|
|
417
486
|
update?: boolean;
|
|
418
|
-
/** `delete<Table>` mutations. @default true */
|
|
487
|
+
/** `delete<Table>` / `delete<Table>Single` mutations. @default true */
|
|
419
488
|
delete?: boolean;
|
|
420
489
|
/**
|
|
421
490
|
* `upsert<Table>` / `upsert<Table>Single` mutations — insert, or update the row that
|
|
@@ -425,6 +494,17 @@ type SchemaFeatures = {
|
|
|
425
494
|
* @default false
|
|
426
495
|
*/
|
|
427
496
|
upsert?: boolean;
|
|
497
|
+
/**
|
|
498
|
+
* Makes `where` non-null on the plural `update<Table>` / `delete<Table>` mutations, and
|
|
499
|
+
* rejects a `where` that collapses to no filters (e.g. `where: {}`), so a schema can rule
|
|
500
|
+
* out unbounded writes at the type level. Off by default for backwards compatibility.
|
|
501
|
+
*
|
|
502
|
+
* The `Single` variants (`update<Table>Single` / `delete<Table>Single`) require a
|
|
503
|
+
* non-empty `where` regardless of this flag.
|
|
504
|
+
*
|
|
505
|
+
* @default false
|
|
506
|
+
*/
|
|
507
|
+
requireWhere?: boolean;
|
|
428
508
|
};
|
|
429
509
|
/**
|
|
430
510
|
* Per-field cost hints for `graphql-query-complexity` (or any estimator that reads
|
|
@@ -643,7 +723,14 @@ type BuildSchemaConfig = {
|
|
|
643
723
|
* for everything else, so a client cannot know which it will get.
|
|
644
724
|
*/
|
|
645
725
|
declare const GraphQLBigIntString: GraphQLScalarType<string, string>;
|
|
726
|
+
/**
|
|
727
|
+
* An arbitrary-precision decimal (`numeric` / `decimal` columns). Always transported as a
|
|
728
|
+
* numeric string, in both directions, so no value is ever silently rounded by JSON's
|
|
729
|
+
* double-precision numbers. Accepts numeric literals and numeric strings on input; rejects
|
|
730
|
+
* non-numeric strings (including 'NaN' and 'Infinity').
|
|
731
|
+
*/
|
|
732
|
+
declare const GraphQLDecimalString: GraphQLScalarType<string, string>;
|
|
646
733
|
|
|
647
734
|
declare const buildSchema: <TDbClient extends AnyDrizzleDB<any>>(db: TDbClient, config?: BuildSchemaConfig) => GeneratedData<TDbClient>;
|
|
648
735
|
|
|
649
|
-
export { type AggregateResolver, type AnyDrizzleDB, type BuildSchemaConfig, type ComplexityConfig, type DeleteResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedOutputs, GraphQLBigIntString, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type RelationResolverFactory, type SchemaFeatures, type SelectResolver, type SelectSingleResolver, type TableNamedRelations, type UpdateResolver, type UpsertArgs, type UpsertArrResolver, type UpsertConflictArgs, type UpsertResolver, buildSchema, createRelationResolverFactory, defaultErrorMapper, drizzleExecutorKey, extractFilters, extractOrderBy, extractRelationJoinColumns };
|
|
736
|
+
export { type AggregateResolver, type AnyDrizzleDB, type BuildSchemaConfig, type ComplexityConfig, type DeleteResolver, type DeleteSingleResolver, type ExtractRelations, type ExtractTableByName, type ExtractTableRelations, type ExtractTables, type GeneratedData, type GeneratedEntities, type GeneratedInputs, type GeneratedOutputs, GraphQLBigIntString, GraphQLDecimalString, type InsertArrResolver, type InsertResolver, type MutationReturnlessResult, type MutationsCore, type QueriesCore, type RelationResolverFactory, type SchemaFeatures, type SelectResolver, type SelectSingleResolver, type TableNamedRelations, type UpdateResolver, type UpdateSingleResolver, type UpsertArgs, type UpsertArrResolver, type UpsertConflictArgs, type UpsertResolver, buildSchema, createRelationResolverFactory, defaultErrorMapper, drizzleExecutorKey, extractFilters, extractOrderBy, extractRelationJoinColumns };
|