@vantreeseba/drizzle-graphql 7.9.0 → 7.9.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 +7 -0
- package/dist/README.md +7 -0
- package/dist/index.cjs +10 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +10 -6
- package/dist/index.js.map +1 -1
- package/dist/package.json +3 -10
- package/package.json +3 -10
package/dist/index.d.cts
CHANGED
|
@@ -111,19 +111,19 @@ type TableNamedRelations = {
|
|
|
111
111
|
};
|
|
112
112
|
type ColTypeIsNull<TColumn extends Column, TColType> = TColumn['_']['notNull'] extends true ? TColType : TColType | null;
|
|
113
113
|
type ColTypeIsNullOrUndefinedWithDefault<TColumn extends Column, TColType> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? TColType | null | undefined : TColumn['defaultFn'] extends undefined ? TColType : TColType | null | undefined : TColType | null | undefined;
|
|
114
|
-
type GetColumnGqlDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNull<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['
|
|
114
|
+
type GetColumnGqlDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNull<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? ColTypeIsNull<TColumn, {
|
|
115
115
|
x: number;
|
|
116
116
|
y: number;
|
|
117
117
|
}> : ColTypeIsNull<TColumn, string> : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? ColTypeIsNull<TColumn, TColumn['enumValues'][number]> : ColTypeIsNull<TColumn, string> : TColumn['dataType'] extends 'number' ? ColTypeIsNull<TColumn, number> : TColumn['dataType'] extends 'buffer' ? ColTypeIsNull<TColumn, number[]> : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? ColTypeIsNull<TColumn, number[]> : TColumn['columnType'] extends 'PgGeometry' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, [number, number]> : ColTypeIsNull<TColumn, Array<GetColumnGqlDataType<TColumn extends {
|
|
118
118
|
baseColumn: Column;
|
|
119
119
|
} ? TColumn['baseColumn'] : never> extends infer InnerColType ? InnerColType extends null | undefined ? never : InnerColType : never>> : never;
|
|
120
|
-
type GetColumnGqlInsertDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['
|
|
120
|
+
type GetColumnGqlInsertDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, {
|
|
121
121
|
x: number;
|
|
122
122
|
y: number;
|
|
123
123
|
}> : ColTypeIsNullOrUndefinedWithDefault<TColumn, string> : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? ColTypeIsNullOrUndefinedWithDefault<TColumn, TColumn['enumValues'][number]> : ColTypeIsNullOrUndefinedWithDefault<TColumn, string> : TColumn['dataType'] extends 'number' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number> : TColumn['dataType'] extends 'buffer' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number[]> : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number[]> : TColumn['columnType'] extends 'PgGeometry' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, [number, number]> : ColTypeIsNullOrUndefinedWithDefault<TColumn, Array<GetColumnGqlDataType<TColumn extends {
|
|
124
124
|
baseColumn: Column;
|
|
125
125
|
} ? TColumn['baseColumn'] : never> extends infer InnerColType ? InnerColType extends null | undefined ? never : InnerColType : never>> : never;
|
|
126
|
-
type GetColumnGqlUpdateDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? boolean | null | undefined : TColumn['dataType'] extends 'json' ? TColumn['
|
|
126
|
+
type GetColumnGqlUpdateDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? boolean | null | undefined : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? {
|
|
127
127
|
x: number;
|
|
128
128
|
y: number;
|
|
129
129
|
} | null | undefined : string | null | undefined : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? TColumn['enumValues'][number] | null | undefined : string | null | undefined : TColumn['dataType'] extends 'number' ? number | null | undefined : TColumn['dataType'] extends 'buffer' ? number[] | null | undefined : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? number[] | null | undefined : TColumn['columnType'] extends 'PgGeometry' ? [number, number] | null | undefined : Array<GetColumnGqlDataType<TColumn extends {
|
|
@@ -508,10 +508,10 @@ type DeleteSingleArgs<TTable extends Table> = {
|
|
|
508
508
|
where: Filters<TTable>;
|
|
509
509
|
};
|
|
510
510
|
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> & {
|
|
511
|
-
[K in RelKey]: TRelations[K] extends One<
|
|
511
|
+
[K in RelKey]: TRelations[K] extends One<infer TTargetName, any> ? GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<infer TTargetName> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never>> : never;
|
|
512
512
|
}> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
|
|
513
513
|
type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
|
|
514
|
-
[K in RelKey]: TRelations[K] extends One<
|
|
514
|
+
[K in RelKey]: TRelations[K] extends One<infer TTargetName, any> ? GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<infer TTargetName> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never>> : never;
|
|
515
515
|
} : GetRemappedTableDataType<TTable> : GetRemappedTableDataType<TTable>) | null>;
|
|
516
516
|
/** Resolver for `create<Table>Single`: one row in, one row (or `undefined`) out. */
|
|
517
517
|
type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
package/dist/index.d.ts
CHANGED
|
@@ -111,19 +111,19 @@ type TableNamedRelations = {
|
|
|
111
111
|
};
|
|
112
112
|
type ColTypeIsNull<TColumn extends Column, TColType> = TColumn['_']['notNull'] extends true ? TColType : TColType | null;
|
|
113
113
|
type ColTypeIsNullOrUndefinedWithDefault<TColumn extends Column, TColType> = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? TColType | null | undefined : TColumn['defaultFn'] extends undefined ? TColType : TColType | null | undefined : TColType | null | undefined;
|
|
114
|
-
type GetColumnGqlDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNull<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['
|
|
114
|
+
type GetColumnGqlDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNull<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? ColTypeIsNull<TColumn, {
|
|
115
115
|
x: number;
|
|
116
116
|
y: number;
|
|
117
117
|
}> : ColTypeIsNull<TColumn, string> : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? ColTypeIsNull<TColumn, TColumn['enumValues'][number]> : ColTypeIsNull<TColumn, string> : TColumn['dataType'] extends 'number' ? ColTypeIsNull<TColumn, number> : TColumn['dataType'] extends 'buffer' ? ColTypeIsNull<TColumn, number[]> : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? ColTypeIsNull<TColumn, number[]> : TColumn['columnType'] extends 'PgGeometry' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, [number, number]> : ColTypeIsNull<TColumn, Array<GetColumnGqlDataType<TColumn extends {
|
|
118
118
|
baseColumn: Column;
|
|
119
119
|
} ? TColumn['baseColumn'] : never> extends infer InnerColType ? InnerColType extends null | undefined ? never : InnerColType : never>> : never;
|
|
120
|
-
type GetColumnGqlInsertDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['
|
|
120
|
+
type GetColumnGqlInsertDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, boolean> : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, {
|
|
121
121
|
x: number;
|
|
122
122
|
y: number;
|
|
123
123
|
}> : ColTypeIsNullOrUndefinedWithDefault<TColumn, string> : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? ColTypeIsNullOrUndefinedWithDefault<TColumn, TColumn['enumValues'][number]> : ColTypeIsNullOrUndefinedWithDefault<TColumn, string> : TColumn['dataType'] extends 'number' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number> : TColumn['dataType'] extends 'buffer' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number[]> : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, number[]> : TColumn['columnType'] extends 'PgGeometry' ? ColTypeIsNullOrUndefinedWithDefault<TColumn, [number, number]> : ColTypeIsNullOrUndefinedWithDefault<TColumn, Array<GetColumnGqlDataType<TColumn extends {
|
|
124
124
|
baseColumn: Column;
|
|
125
125
|
} ? TColumn['baseColumn'] : never> extends infer InnerColType ? InnerColType extends null | undefined ? never : InnerColType : never>> : never;
|
|
126
|
-
type GetColumnGqlUpdateDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? boolean | null | undefined : TColumn['dataType'] extends 'json' ? TColumn['
|
|
126
|
+
type GetColumnGqlUpdateDataType<TColumn extends Column> = TColumn['dataType'] extends 'boolean' ? boolean | null | undefined : TColumn['dataType'] extends 'json' ? TColumn['columnType'] extends 'PgGeometryObject' ? {
|
|
127
127
|
x: number;
|
|
128
128
|
y: number;
|
|
129
129
|
} | null | undefined : string | null | undefined : TColumn['dataType'] extends 'date' | 'string' | 'bigint' ? TColumn['enumValues'] extends [string, ...string[]] ? TColumn['enumValues'][number] | null | undefined : string | null | undefined : TColumn['dataType'] extends 'number' ? number | null | undefined : TColumn['dataType'] extends 'buffer' ? number[] | null | undefined : TColumn['dataType'] extends 'array' ? TColumn['columnType'] extends 'PgVector' ? number[] | null | undefined : TColumn['columnType'] extends 'PgGeometry' ? [number, number] | null | undefined : Array<GetColumnGqlDataType<TColumn extends {
|
|
@@ -508,10 +508,10 @@ type DeleteSingleArgs<TTable extends Table> = {
|
|
|
508
508
|
where: Filters<TTable>;
|
|
509
509
|
};
|
|
510
510
|
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> & {
|
|
511
|
-
[K in RelKey]: TRelations[K] extends One<
|
|
511
|
+
[K in RelKey]: TRelations[K] extends One<infer TTargetName, any> ? GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<infer TTargetName> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never>> : never;
|
|
512
512
|
}> : Array<GetRemappedTableDataType<TTable>> : Array<GetRemappedTableDataType<TTable>>>;
|
|
513
513
|
type SelectSingleResolver<TTable extends Table, TTables extends Record<string, Table>, TRelations extends Record<string, Relation>> = (source: any, args: Partial<QueryArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<(keyof TRelations extends infer RelKey ? RelKey extends string ? GetRemappedTableDataType<TTable> & {
|
|
514
|
-
[K in RelKey]: TRelations[K] extends One<
|
|
514
|
+
[K in RelKey]: TRelations[K] extends One<infer TTargetName, any> ? GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never> | null : TRelations[K] extends Many<infer TTargetName> ? Array<GetRemappedTableDataType<ExtractTableByName<TTables, TTargetName> extends infer T ? T[keyof T] : never>> : never;
|
|
515
515
|
} : GetRemappedTableDataType<TTable> : GetRemappedTableDataType<TTable>) | null>;
|
|
516
516
|
/** Resolver for `create<Table>Single`: one row in, one row (or `undefined`) out. */
|
|
517
517
|
type InsertResolver<TTable extends Table, IsReturnless extends boolean> = (source: any, args: Partial<InsertArgs<TTable, true>>, context: any, info: GraphQLResolveInfo) => Promise<IsReturnless extends false ? GetRemappedTableDataType<TTable> | undefined : MutationReturnlessResult>;
|
package/dist/index.js
CHANGED
|
@@ -468,6 +468,7 @@ var remapToGraphQLCore = (key, value, tableName, column, relationMap) => {
|
|
|
468
468
|
return value;
|
|
469
469
|
};
|
|
470
470
|
var remapToGraphQLSingleOutput = (queryOutput, tableName, table, relationMap) => {
|
|
471
|
+
const columns = getTableColumns2(table);
|
|
471
472
|
for (const [key, value] of Object.entries(queryOutput)) {
|
|
472
473
|
if (value === void 0 || value === null) {
|
|
473
474
|
const relEntry = value === null ? relationMap?.[tableName]?.[key] : void 0;
|
|
@@ -478,7 +479,7 @@ var remapToGraphQLSingleOutput = (queryOutput, tableName, table, relationMap) =>
|
|
|
478
479
|
delete queryOutput[key];
|
|
479
480
|
continue;
|
|
480
481
|
}
|
|
481
|
-
const column =
|
|
482
|
+
const column = columns[key];
|
|
482
483
|
if (value === 0n && column && column.columnType === "SQLiteBigInt" && !column.notNull) {
|
|
483
484
|
delete queryOutput[key];
|
|
484
485
|
continue;
|
|
@@ -937,6 +938,7 @@ var resolveQueryExecutor = (db, context, tableName, buildTimeQueryBase) => {
|
|
|
937
938
|
queryBase: buildTimeQueryBase ? executor?.query?.[tableName] ?? buildTimeQueryBase : buildTimeQueryBase
|
|
938
939
|
};
|
|
939
940
|
};
|
|
941
|
+
var DEFAULT_TRANSACTION_TIMEOUT_MS = 3e4;
|
|
940
942
|
var createMutationTxCtx = (options) => options ? { timeoutMs: options.timeoutMs, fieldNames: /* @__PURE__ */ new Set(), states: /* @__PURE__ */ new WeakMap() } : void 0;
|
|
941
943
|
var includedByDirectives = (node, variables) => {
|
|
942
944
|
for (const directive of node.directives ?? []) {
|
|
@@ -3970,7 +3972,7 @@ var parseAggregateRequest = (info, target, rootTypeName = `${target.typeName}Agg
|
|
|
3970
3972
|
for (const field of Object.values(selectionTree)) {
|
|
3971
3973
|
if (field.name === "count") {
|
|
3972
3974
|
request.count = true;
|
|
3973
|
-
request.selection
|
|
3975
|
+
request.selection["count"] = count();
|
|
3974
3976
|
continue;
|
|
3975
3977
|
}
|
|
3976
3978
|
if (!AGGREGATE_OPS.includes(field.name)) {
|
|
@@ -3996,7 +3998,7 @@ var parseAggregateRequest = (info, target, rootTypeName = `${target.typeName}Agg
|
|
|
3996
3998
|
var assembleAggregateRow = (row, request, target) => {
|
|
3997
3999
|
const result = {};
|
|
3998
4000
|
if (request.count) {
|
|
3999
|
-
result
|
|
4001
|
+
result["count"] = row["count"] == null ? 0 : Number(row["count"]);
|
|
4000
4002
|
}
|
|
4001
4003
|
for (const op of AGGREGATE_OPS) {
|
|
4002
4004
|
if (!request.ops[op].length) {
|
|
@@ -4893,7 +4895,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4893
4895
|
const inputs = {};
|
|
4894
4896
|
const outputs = {};
|
|
4895
4897
|
if (["insert", "upsert", "update", "delete"].some((feature) => anyTable(feature))) {
|
|
4896
|
-
outputs
|
|
4898
|
+
outputs["MutationReturn"] = mutationReturnType;
|
|
4897
4899
|
}
|
|
4898
4900
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
4899
4901
|
const tableFeatures = featureOf(tableName);
|
|
@@ -6655,7 +6657,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
6655
6657
|
for (const excluded of excludedTables) {
|
|
6656
6658
|
delete namedRelations[excluded];
|
|
6657
6659
|
}
|
|
6658
|
-
attachTargetPrimaryKeys(namedRelations, tables, pgPrimaryKeyPropNames);
|
|
6660
|
+
attachTargetPrimaryKeys(namedRelations, tables, (table) => pgPrimaryKeyPropNames(table));
|
|
6659
6661
|
const eagerRelations = pruneNonEagerRelations(namedRelations, shouldEagerLoad);
|
|
6660
6662
|
const filterCtx = { tables, relationMap: namedRelations };
|
|
6661
6663
|
const tablePolicies = options.policies;
|
|
@@ -8793,7 +8795,9 @@ var buildSchema = (db, config) => {
|
|
|
8793
8795
|
aggregateCost: (complexityConfig === true ? void 0 : complexityConfig.aggregateCost) ?? 10
|
|
8794
8796
|
};
|
|
8795
8797
|
const transactionsOpt = config?.transactions;
|
|
8796
|
-
const transactions = transactionsOpt === void 0 || transactionsOpt === "none" ? void 0 : {
|
|
8798
|
+
const transactions = transactionsOpt === void 0 || transactionsOpt === "none" ? void 0 : {
|
|
8799
|
+
timeoutMs: (transactionsOpt === "auto" ? void 0 : transactionsOpt.timeoutMs) ?? DEFAULT_TRANSACTION_TIMEOUT_MS
|
|
8800
|
+
};
|
|
8797
8801
|
const limitsConfig = config?.limits;
|
|
8798
8802
|
if (limitsConfig) {
|
|
8799
8803
|
const check = (policy, where) => {
|