@vantreeseba/drizzle-graphql 7.3.0 → 7.5.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 +161 -0
- package/dist/README.md +161 -0
- package/dist/index.cjs +614 -161
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +270 -23
- package/dist/index.d.ts +270 -23
- package/dist/index.js +606 -159
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -40,15 +40,21 @@ __export(index_exports, {
|
|
|
40
40
|
createRelationResolverFactory: () => createRelationResolverFactory,
|
|
41
41
|
defaultErrorMapper: () => defaultErrorMapper,
|
|
42
42
|
drizzleExecutorKey: () => drizzleExecutorKey,
|
|
43
|
+
drizzleExtension: () => drizzleExtension,
|
|
43
44
|
extractFilters: () => extractFilters,
|
|
44
45
|
extractOrderBy: () => extractOrderBy,
|
|
45
|
-
extractRelationJoinColumns: () => extractRelationJoinColumns
|
|
46
|
+
extractRelationJoinColumns: () => extractRelationJoinColumns,
|
|
47
|
+
identifyRows: () => identifyRows,
|
|
48
|
+
isDrizzleFieldExtension: () => isDrizzleFieldExtension,
|
|
49
|
+
resolveSelection: () => resolveSelection,
|
|
50
|
+
selectionToWith: () => selectionToWith,
|
|
51
|
+
singularizeMapper: () => singularizeMapper
|
|
46
52
|
});
|
|
47
53
|
module.exports = __toCommonJS(index_exports);
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
54
|
+
var import_drizzle_orm11 = require("drizzle-orm");
|
|
55
|
+
var import_mysql_core4 = require("drizzle-orm/mysql-core");
|
|
56
|
+
var import_pg_core4 = require("drizzle-orm/pg-core");
|
|
57
|
+
var import_sqlite_core4 = require("drizzle-orm/sqlite-core");
|
|
52
58
|
var import_graphql11 = require("graphql");
|
|
53
59
|
|
|
54
60
|
// src/util/builders/common.ts
|
|
@@ -105,6 +111,10 @@ var getOrCreateLoader = (context, key, batchFn) => {
|
|
|
105
111
|
var import_pluralize = __toESM(require("pluralize"), 1);
|
|
106
112
|
var uncapitalize = (input) => input?.length ? `${input[0].toLocaleLowerCase()}${input.length > 1 ? input.slice(1, input.length) : ""}` : input;
|
|
107
113
|
var capitalize = (input) => input?.length ? `${input[0].toLocaleUpperCase()}${input.length > 1 ? input.slice(1, input.length) : ""}` : input;
|
|
114
|
+
var singularizeMapper = (tableName) => ({
|
|
115
|
+
singular: uncapitalize(import_pluralize.default.singular(tableName)),
|
|
116
|
+
plural: uncapitalize(import_pluralize.default.plural(tableName))
|
|
117
|
+
});
|
|
108
118
|
|
|
109
119
|
// src/util/data-mappers/index.ts
|
|
110
120
|
var import_drizzle_orm2 = require("drizzle-orm");
|
|
@@ -593,6 +603,123 @@ var remapFromGraphQLArrayInput = (queryInput, table) => {
|
|
|
593
603
|
return queryInput;
|
|
594
604
|
};
|
|
595
605
|
|
|
606
|
+
// src/util/extensions.ts
|
|
607
|
+
var drizzleExtension = (target) => {
|
|
608
|
+
const value = target?.extensions?.drizzle;
|
|
609
|
+
return value && typeof value === "object" ? value : void 0;
|
|
610
|
+
};
|
|
611
|
+
var isDrizzleFieldExtension = (value) => !!value && value.kind !== "type";
|
|
612
|
+
var tableFieldExtensions = (table, primaryKey) => (meta) => ({
|
|
613
|
+
table,
|
|
614
|
+
primaryKey,
|
|
615
|
+
...meta
|
|
616
|
+
});
|
|
617
|
+
var tableTypeExtension = (table, primaryKey) => ({
|
|
618
|
+
table,
|
|
619
|
+
kind: "type",
|
|
620
|
+
primaryKey
|
|
621
|
+
});
|
|
622
|
+
var relationFieldExtension = (params) => ({
|
|
623
|
+
table: params.targetTable,
|
|
624
|
+
kind: params.aggregate ? "aggregate" : "relation",
|
|
625
|
+
operation: params.aggregate ? "relationAggregate" : "relation",
|
|
626
|
+
// An aggregate over a to-many relation still resolves to a single aggregate object.
|
|
627
|
+
single: params.aggregate ? true : params.single,
|
|
628
|
+
targetArg: "where",
|
|
629
|
+
primaryKey: params.primaryKey,
|
|
630
|
+
relation: params.relation,
|
|
631
|
+
parentTable: params.parentTable
|
|
632
|
+
});
|
|
633
|
+
var keyFromValues = (entry, primaryKey) => {
|
|
634
|
+
if (!entry || typeof entry !== "object") {
|
|
635
|
+
return void 0;
|
|
636
|
+
}
|
|
637
|
+
const row = {};
|
|
638
|
+
for (const column of primaryKey) {
|
|
639
|
+
const value = entry[column];
|
|
640
|
+
if (value === void 0 || value === null) {
|
|
641
|
+
return void 0;
|
|
642
|
+
}
|
|
643
|
+
row[column] = value;
|
|
644
|
+
}
|
|
645
|
+
return row;
|
|
646
|
+
};
|
|
647
|
+
var keysFromWhere = (where, primaryKey) => {
|
|
648
|
+
const none = { rows: [], complete: false };
|
|
649
|
+
if (!where || typeof where !== "object" || Array.isArray(where)) {
|
|
650
|
+
return none;
|
|
651
|
+
}
|
|
652
|
+
const filters = where;
|
|
653
|
+
if (filters.OR || filters.AND || filters.NOT) {
|
|
654
|
+
return none;
|
|
655
|
+
}
|
|
656
|
+
if (primaryKey.length > 1) {
|
|
657
|
+
const row = {};
|
|
658
|
+
for (const column2 of primaryKey) {
|
|
659
|
+
const operators2 = filters[column2];
|
|
660
|
+
if (!operators2 || typeof operators2 !== "object" || operators2.eq === void 0) {
|
|
661
|
+
return none;
|
|
662
|
+
}
|
|
663
|
+
row[column2] = operators2.eq;
|
|
664
|
+
}
|
|
665
|
+
return { rows: [row], complete: Object.keys(filters).length === primaryKey.length };
|
|
666
|
+
}
|
|
667
|
+
const column = primaryKey[0];
|
|
668
|
+
if (!column) {
|
|
669
|
+
return none;
|
|
670
|
+
}
|
|
671
|
+
const operators = filters[column];
|
|
672
|
+
if (!operators || typeof operators !== "object") {
|
|
673
|
+
return none;
|
|
674
|
+
}
|
|
675
|
+
const exact = Object.keys(filters).length === 1 && Object.keys(operators).length === 1;
|
|
676
|
+
if (operators.eq !== void 0) {
|
|
677
|
+
return { rows: [{ [column]: operators.eq }], complete: exact };
|
|
678
|
+
}
|
|
679
|
+
if (Array.isArray(operators.inArray)) {
|
|
680
|
+
return { rows: operators.inArray.map((value) => ({ [column]: value })), complete: exact };
|
|
681
|
+
}
|
|
682
|
+
return none;
|
|
683
|
+
};
|
|
684
|
+
var identifyRows = (field, args) => {
|
|
685
|
+
const meta = drizzleExtension(field);
|
|
686
|
+
if (!isDrizzleFieldExtension(meta)) {
|
|
687
|
+
return void 0;
|
|
688
|
+
}
|
|
689
|
+
const { table, primaryKey, targetArg } = meta;
|
|
690
|
+
const empty = { table, primaryKey, rows: [], complete: false };
|
|
691
|
+
if (!primaryKey.length || !targetArg) {
|
|
692
|
+
return empty;
|
|
693
|
+
}
|
|
694
|
+
const target = args?.[targetArg];
|
|
695
|
+
if (targetArg === "values") {
|
|
696
|
+
const entries = Array.isArray(target) ? target : target === void 0 ? [] : [target];
|
|
697
|
+
const rows = entries.map((entry) => keyFromValues(entry, primaryKey));
|
|
698
|
+
return {
|
|
699
|
+
table,
|
|
700
|
+
primaryKey,
|
|
701
|
+
rows: rows.filter((row) => !!row),
|
|
702
|
+
// A row whose key the database generates is not identifiable before the write.
|
|
703
|
+
complete: entries.length > 0 && rows.every(Boolean)
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
if (targetArg === "updates") {
|
|
707
|
+
if (!Array.isArray(target)) {
|
|
708
|
+
return empty;
|
|
709
|
+
}
|
|
710
|
+
const perEntry = target.map(
|
|
711
|
+
(entry) => keysFromWhere(entry?.where, primaryKey)
|
|
712
|
+
);
|
|
713
|
+
return {
|
|
714
|
+
table,
|
|
715
|
+
primaryKey,
|
|
716
|
+
rows: perEntry.flatMap((entry) => entry.rows),
|
|
717
|
+
complete: target.length > 0 && perEntry.every((entry) => entry.complete)
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
return { table, primaryKey, ...keysFromWhere(target, primaryKey) };
|
|
721
|
+
};
|
|
722
|
+
|
|
596
723
|
// src/util/builders/field-updates.ts
|
|
597
724
|
var import_drizzle_orm3 = require("drizzle-orm");
|
|
598
725
|
var import_graphql4 = require("graphql");
|
|
@@ -1139,6 +1266,14 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx, limits
|
|
|
1139
1266
|
return loader.load(localValue);
|
|
1140
1267
|
};
|
|
1141
1268
|
};
|
|
1269
|
+
var relationExtensionFor = (relEntry, parentTable, relationName, isOne, aggregate) => relationFieldExtension({
|
|
1270
|
+
targetTable: relEntry.targetTableName,
|
|
1271
|
+
parentTable,
|
|
1272
|
+
relation: relationName,
|
|
1273
|
+
single: isOne,
|
|
1274
|
+
primaryKey: relEntry.targetPkNames ?? [],
|
|
1275
|
+
aggregate
|
|
1276
|
+
});
|
|
1142
1277
|
var columnDocs = (docs, column, tableName, columnName) => {
|
|
1143
1278
|
const description = docs.describeColumn?.(column, { tableName, columnName });
|
|
1144
1279
|
const deprecationReason = docs.deprecateColumn?.(column, { tableName, columnName });
|
|
@@ -1818,7 +1953,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1818
1953
|
const shell = new import_graphql5.GraphQLObjectType({
|
|
1819
1954
|
name: typeName,
|
|
1820
1955
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
1821
|
-
fields: () => ({ ...tableFields, ...container.fields })
|
|
1956
|
+
fields: () => ({ ...tableFields, ...container.fields }),
|
|
1957
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
1822
1958
|
});
|
|
1823
1959
|
cacheCtx.objectTypeCache.set(tableName, shell);
|
|
1824
1960
|
}
|
|
@@ -1860,7 +1996,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1860
1996
|
relType = new import_graphql5.GraphQLObjectType({
|
|
1861
1997
|
name: resolveTypeName(targetTableName, typeNameMapper),
|
|
1862
1998
|
description: cacheCtx.docs.describeTable?.(targetTableName),
|
|
1863
|
-
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields })
|
|
1999
|
+
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields }),
|
|
2000
|
+
extensions: {
|
|
2001
|
+
drizzle: tableTypeExtension(targetTableName, cacheCtx.primaryKeyOf?.(targetTableName) ?? [])
|
|
2002
|
+
}
|
|
1864
2003
|
});
|
|
1865
2004
|
cacheCtx.objectTypeCache.set(targetTableName, relType);
|
|
1866
2005
|
}
|
|
@@ -1877,12 +2016,13 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1877
2016
|
where: { type: relSelectData.filters }
|
|
1878
2017
|
},
|
|
1879
2018
|
resolve,
|
|
1880
|
-
...relationDocs
|
|
2019
|
+
...relationDocs,
|
|
2020
|
+
extensions: { drizzle: relationExtensionFor(relEntry, tableName, relationName, true) }
|
|
1881
2021
|
}
|
|
1882
2022
|
]);
|
|
1883
2023
|
continue;
|
|
1884
2024
|
}
|
|
1885
|
-
const targetDistinctEnum = cacheCtx.
|
|
2025
|
+
const targetDistinctEnum = cacheCtx.featureOf(targetTableName).distinct ? generateDistinctEnum(tables[targetTableName], resolveTypeName(targetTableName, typeNameMapper)) : void 0;
|
|
1886
2026
|
rawRelationFields.push([
|
|
1887
2027
|
relationName,
|
|
1888
2028
|
{
|
|
@@ -1900,11 +2040,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1900
2040
|
},
|
|
1901
2041
|
resolve,
|
|
1902
2042
|
...relationDocs,
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
} : {}
|
|
2043
|
+
extensions: {
|
|
2044
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, false),
|
|
2045
|
+
...cacheCtx.complexity ? { complexity: listFieldComplexity(cacheCtx.complexity, cacheCtx.limits?.(targetTableName)) } : {}
|
|
2046
|
+
}
|
|
1908
2047
|
}
|
|
1909
2048
|
]);
|
|
1910
2049
|
const aggregateFieldName = `${relationName}Aggregate`;
|
|
@@ -1923,7 +2062,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1923
2062
|
where: { type: relSelectData.filters }
|
|
1924
2063
|
},
|
|
1925
2064
|
resolve: relationAggregate.resolve,
|
|
1926
|
-
|
|
2065
|
+
extensions: {
|
|
2066
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, isOne, true),
|
|
2067
|
+
...cacheCtx.complexity ? { complexity: aggregateFieldComplexity(cacheCtx.complexity) } : {}
|
|
2068
|
+
}
|
|
1927
2069
|
}
|
|
1928
2070
|
]);
|
|
1929
2071
|
}
|
|
@@ -1992,7 +2134,7 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
1992
2134
|
const updateFields = Object.fromEntries(
|
|
1993
2135
|
columnEntries.map(([columnName, column]) => {
|
|
1994
2136
|
const converted = drizzleColumnToGraphQLType(column, columnName, tableName, true, false, true);
|
|
1995
|
-
const operations = cacheCtx.
|
|
2137
|
+
const operations = cacheCtx.featureOf(tableName).fieldUpdateOperations ? fieldUpdateInputType(column, columnName, tableName) : void 0;
|
|
1996
2138
|
const field = operations ? { ...converted, type: operations } : converted;
|
|
1997
2139
|
return [columnName, { ...field, ...inputFieldDocs(cacheCtx.docs, column, tableName, columnName, field.type) }];
|
|
1998
2140
|
})
|
|
@@ -2009,7 +2151,8 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
2009
2151
|
const selectSingleOutput = cacheCtx.objectTypeCache.get(tableName) ?? new import_graphql5.GraphQLObjectType({
|
|
2010
2152
|
name: resolveTypeName(tableName, typeNameMapper),
|
|
2011
2153
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
2012
|
-
fields: { ...tableFields, ...relationFields }
|
|
2154
|
+
fields: { ...tableFields, ...relationFields },
|
|
2155
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
2013
2156
|
});
|
|
2014
2157
|
const selectArrOutput = new import_graphql5.GraphQLNonNull(new import_graphql5.GraphQLList(new import_graphql5.GraphQLNonNull(selectSingleOutput)));
|
|
2015
2158
|
const arrTableItemOutput = withReturning ? (
|
|
@@ -3410,6 +3553,38 @@ var import_mysql_core2 = require("drizzle-orm/mysql-core");
|
|
|
3410
3553
|
var import_graphql7 = require("graphql");
|
|
3411
3554
|
var import_graphql_parse_resolve_info2 = require("graphql-parse-resolve-info");
|
|
3412
3555
|
|
|
3556
|
+
// src/util/features.ts
|
|
3557
|
+
var featureDefaults = {
|
|
3558
|
+
aggregates: true,
|
|
3559
|
+
groupBy: true,
|
|
3560
|
+
relationAggregates: true,
|
|
3561
|
+
distinct: true,
|
|
3562
|
+
insert: true,
|
|
3563
|
+
update: true,
|
|
3564
|
+
updateMany: true,
|
|
3565
|
+
delete: true,
|
|
3566
|
+
upsert: false,
|
|
3567
|
+
fieldUpdateOperations: false,
|
|
3568
|
+
countMutations: false,
|
|
3569
|
+
requireWhere: false
|
|
3570
|
+
};
|
|
3571
|
+
var resolveTableFeatures = (features) => {
|
|
3572
|
+
const cache = /* @__PURE__ */ new Map();
|
|
3573
|
+
const names = Object.keys(featureDefaults);
|
|
3574
|
+
return (tableName) => {
|
|
3575
|
+
let resolved = cache.get(tableName);
|
|
3576
|
+
if (!resolved) {
|
|
3577
|
+
resolved = {};
|
|
3578
|
+
for (const name of names) {
|
|
3579
|
+
const configured = features?.[name];
|
|
3580
|
+
resolved[name] = configured === void 0 ? featureDefaults[name] : typeof configured === "function" ? !!configured(tableName) : !!configured;
|
|
3581
|
+
}
|
|
3582
|
+
cache.set(tableName, resolved);
|
|
3583
|
+
}
|
|
3584
|
+
return resolved;
|
|
3585
|
+
};
|
|
3586
|
+
};
|
|
3587
|
+
|
|
3413
3588
|
// src/util/builders/aggregates.ts
|
|
3414
3589
|
var import_drizzle_orm5 = require("drizzle-orm");
|
|
3415
3590
|
var import_graphql6 = require("graphql");
|
|
@@ -4144,6 +4319,8 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4144
4319
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
4145
4320
|
const tableEntries = schemaEntries.filter(([key, value]) => (0, import_drizzle_orm6.is)(value, import_mysql_core2.MySqlTable) && !excludedTables.has(key));
|
|
4146
4321
|
const tables = Object.fromEntries(tableEntries);
|
|
4322
|
+
const featureOf = resolveTableFeatures(features);
|
|
4323
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
4147
4324
|
if (!tableEntries.length) {
|
|
4148
4325
|
throw new Error(
|
|
4149
4326
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -4186,9 +4363,10 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4186
4363
|
complexity,
|
|
4187
4364
|
limits,
|
|
4188
4365
|
docs: options.docs ?? {},
|
|
4189
|
-
|
|
4366
|
+
primaryKeyOf: (name) => tables[name] ? mysqlPrimaryKeyPropNames(tables[name]) : [],
|
|
4367
|
+
featureOf
|
|
4190
4368
|
};
|
|
4191
|
-
const relationAggregateFactory =
|
|
4369
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
4192
4370
|
const queries = {};
|
|
4193
4371
|
const mutations = {};
|
|
4194
4372
|
const mutationTxCtx = createMutationTxCtx(options.transactions);
|
|
@@ -4206,7 +4384,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4206
4384
|
prefixes.insert,
|
|
4207
4385
|
prefixes.update,
|
|
4208
4386
|
resolverFactory,
|
|
4209
|
-
relationAggregateFactory
|
|
4387
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0
|
|
4210
4388
|
)
|
|
4211
4389
|
])
|
|
4212
4390
|
);
|
|
@@ -4220,10 +4398,12 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4220
4398
|
});
|
|
4221
4399
|
const inputs = {};
|
|
4222
4400
|
const outputs = {};
|
|
4223
|
-
if (
|
|
4401
|
+
if (["insert", "upsert", "update", "delete"].some((feature) => anyTable(feature))) {
|
|
4224
4402
|
outputs.MutationReturn = mutationReturnType;
|
|
4225
4403
|
}
|
|
4226
4404
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
4405
|
+
const tableFeatures = featureOf(tableName);
|
|
4406
|
+
const drizzleMeta = tableFieldExtensions(tableName, mysqlPrimaryKeyPropNames(schema[tableName]));
|
|
4227
4407
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
4228
4408
|
const { selectSingleOutput, selectArrOutput } = tableTypes.outputs;
|
|
4229
4409
|
const {
|
|
@@ -4255,7 +4435,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4255
4435
|
typeName,
|
|
4256
4436
|
typeNameMapper,
|
|
4257
4437
|
filterCtx,
|
|
4258
|
-
|
|
4438
|
+
tableFeatures.distinct,
|
|
4259
4439
|
limits
|
|
4260
4440
|
);
|
|
4261
4441
|
const selectSingleGenerated = generateSelectSingle(
|
|
@@ -4271,7 +4451,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4271
4451
|
filterCtx,
|
|
4272
4452
|
limits
|
|
4273
4453
|
);
|
|
4274
|
-
const insertArrGenerated =
|
|
4454
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray(
|
|
4275
4455
|
db,
|
|
4276
4456
|
tableName,
|
|
4277
4457
|
schema[tableName],
|
|
@@ -4279,7 +4459,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4279
4459
|
createArrayFieldName,
|
|
4280
4460
|
mutationTxCtx
|
|
4281
4461
|
) : void 0;
|
|
4282
|
-
const insertSingleGenerated =
|
|
4462
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle(
|
|
4283
4463
|
db,
|
|
4284
4464
|
tableName,
|
|
4285
4465
|
schema[tableName],
|
|
@@ -4287,7 +4467,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4287
4467
|
createSingleFieldName,
|
|
4288
4468
|
mutationTxCtx
|
|
4289
4469
|
) : void 0;
|
|
4290
|
-
const onConflictInput =
|
|
4470
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
4291
4471
|
table: schema[tableName],
|
|
4292
4472
|
typeName,
|
|
4293
4473
|
uniqueSets: [],
|
|
@@ -4312,7 +4492,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4312
4492
|
true,
|
|
4313
4493
|
mutationTxCtx
|
|
4314
4494
|
) : void 0;
|
|
4315
|
-
const updateGenerated =
|
|
4495
|
+
const updateGenerated = tableFeatures.update ? generateUpdate(
|
|
4316
4496
|
db,
|
|
4317
4497
|
tableName,
|
|
4318
4498
|
schema[tableName],
|
|
@@ -4320,11 +4500,11 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4320
4500
|
tableFilters,
|
|
4321
4501
|
updateFieldName,
|
|
4322
4502
|
false,
|
|
4323
|
-
|
|
4503
|
+
tableFeatures.requireWhere,
|
|
4324
4504
|
filterCtx,
|
|
4325
4505
|
mutationTxCtx
|
|
4326
4506
|
) : void 0;
|
|
4327
|
-
const updateSingleGenerated =
|
|
4507
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate(
|
|
4328
4508
|
db,
|
|
4329
4509
|
tableName,
|
|
4330
4510
|
schema[tableName],
|
|
@@ -4332,11 +4512,11 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4332
4512
|
tableFilters,
|
|
4333
4513
|
updateSingleFieldName,
|
|
4334
4514
|
true,
|
|
4335
|
-
|
|
4515
|
+
tableFeatures.requireWhere,
|
|
4336
4516
|
filterCtx,
|
|
4337
4517
|
mutationTxCtx
|
|
4338
4518
|
) : void 0;
|
|
4339
|
-
const updateManyInput =
|
|
4519
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
4340
4520
|
const updateManyGenerated = updateManyInput ? generateUpdateMany(
|
|
4341
4521
|
db,
|
|
4342
4522
|
tableName,
|
|
@@ -4346,29 +4526,29 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4346
4526
|
filterCtx,
|
|
4347
4527
|
mutationTxCtx
|
|
4348
4528
|
) : void 0;
|
|
4349
|
-
const deleteGenerated =
|
|
4529
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete(
|
|
4350
4530
|
db,
|
|
4351
4531
|
tableName,
|
|
4352
4532
|
schema[tableName],
|
|
4353
4533
|
tableFilters,
|
|
4354
4534
|
deleteFieldName,
|
|
4355
4535
|
false,
|
|
4356
|
-
|
|
4536
|
+
tableFeatures.requireWhere,
|
|
4357
4537
|
filterCtx,
|
|
4358
4538
|
mutationTxCtx
|
|
4359
4539
|
) : void 0;
|
|
4360
|
-
const deleteSingleGenerated =
|
|
4540
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete(
|
|
4361
4541
|
db,
|
|
4362
4542
|
tableName,
|
|
4363
4543
|
schema[tableName],
|
|
4364
4544
|
tableFilters,
|
|
4365
4545
|
deleteSingleFieldName,
|
|
4366
4546
|
true,
|
|
4367
|
-
|
|
4547
|
+
tableFeatures.requireWhere,
|
|
4368
4548
|
filterCtx,
|
|
4369
4549
|
mutationTxCtx
|
|
4370
4550
|
) : void 0;
|
|
4371
|
-
const updateCountGenerated =
|
|
4551
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
4372
4552
|
db,
|
|
4373
4553
|
tableName,
|
|
4374
4554
|
table: schema[tableName],
|
|
@@ -4376,23 +4556,23 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4376
4556
|
setArgs: updateInput,
|
|
4377
4557
|
filterArgs: tableFilters,
|
|
4378
4558
|
fieldName: updateCountFieldName,
|
|
4379
|
-
requireWhere:
|
|
4559
|
+
requireWhere: tableFeatures.requireWhere,
|
|
4380
4560
|
filterCtx,
|
|
4381
4561
|
txCtx: mutationTxCtx
|
|
4382
4562
|
}) : void 0;
|
|
4383
|
-
const deleteCountGenerated =
|
|
4563
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
4384
4564
|
db,
|
|
4385
4565
|
tableName,
|
|
4386
4566
|
table: schema[tableName],
|
|
4387
4567
|
kind: "delete",
|
|
4388
4568
|
filterArgs: tableFilters,
|
|
4389
4569
|
fieldName: deleteCountFieldName,
|
|
4390
|
-
requireWhere:
|
|
4570
|
+
requireWhere: tableFeatures.requireWhere,
|
|
4391
4571
|
filterCtx,
|
|
4392
4572
|
txCtx: mutationTxCtx
|
|
4393
4573
|
}) : void 0;
|
|
4394
|
-
const aggregateType =
|
|
4395
|
-
const aggregateGenerated =
|
|
4574
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
4575
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
4396
4576
|
db,
|
|
4397
4577
|
tableName,
|
|
4398
4578
|
schema[tableName],
|
|
@@ -4401,7 +4581,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4401
4581
|
tableFilters,
|
|
4402
4582
|
filterCtx
|
|
4403
4583
|
) : void 0;
|
|
4404
|
-
const groupByType =
|
|
4584
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
4405
4585
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
4406
4586
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
4407
4587
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -4419,19 +4599,28 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4419
4599
|
type: selectArrOutput,
|
|
4420
4600
|
args: selectArrGenerated.args,
|
|
4421
4601
|
resolve: selectArrGenerated.resolver,
|
|
4422
|
-
|
|
4602
|
+
extensions: {
|
|
4603
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
4604
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
4605
|
+
}
|
|
4423
4606
|
};
|
|
4424
4607
|
queries[selectSingleGenerated.name] = {
|
|
4425
4608
|
type: selectSingleOutput,
|
|
4426
4609
|
args: selectSingleGenerated.args,
|
|
4427
|
-
resolve: selectSingleGenerated.resolver
|
|
4610
|
+
resolve: selectSingleGenerated.resolver,
|
|
4611
|
+
extensions: {
|
|
4612
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
4613
|
+
}
|
|
4428
4614
|
};
|
|
4429
4615
|
if (aggregateGenerated && aggregateType) {
|
|
4430
4616
|
queries[aggregateGenerated.name] = {
|
|
4431
4617
|
type: new import_graphql7.GraphQLNonNull(aggregateType),
|
|
4432
4618
|
args: aggregateGenerated.args,
|
|
4433
4619
|
resolve: aggregateGenerated.resolver,
|
|
4434
|
-
|
|
4620
|
+
extensions: {
|
|
4621
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
4622
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4623
|
+
}
|
|
4435
4624
|
};
|
|
4436
4625
|
}
|
|
4437
4626
|
if (groupByGenerated && groupByType) {
|
|
@@ -4439,25 +4628,30 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4439
4628
|
type: new import_graphql7.GraphQLNonNull(new import_graphql7.GraphQLList(new import_graphql7.GraphQLNonNull(groupByType))),
|
|
4440
4629
|
args: groupByGenerated.args,
|
|
4441
4630
|
resolve: groupByGenerated.resolver,
|
|
4442
|
-
|
|
4631
|
+
extensions: {
|
|
4632
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
4633
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4634
|
+
}
|
|
4443
4635
|
};
|
|
4444
4636
|
}
|
|
4445
|
-
|
|
4446
|
-
insertArrGenerated,
|
|
4447
|
-
insertSingleGenerated,
|
|
4448
|
-
upsertArrGenerated,
|
|
4449
|
-
upsertSingleGenerated,
|
|
4450
|
-
updateGenerated,
|
|
4451
|
-
updateManyGenerated,
|
|
4452
|
-
updateSingleGenerated,
|
|
4453
|
-
deleteGenerated,
|
|
4454
|
-
deleteSingleGenerated
|
|
4455
|
-
]
|
|
4637
|
+
const generatedMutations = [
|
|
4638
|
+
[insertArrGenerated, { operation: "insert", single: false, targetArg: "values" }],
|
|
4639
|
+
[insertSingleGenerated, { operation: "insert", single: true, targetArg: "values" }],
|
|
4640
|
+
[upsertArrGenerated, { operation: "upsert", single: false, targetArg: "values" }],
|
|
4641
|
+
[upsertSingleGenerated, { operation: "upsert", single: true, targetArg: "values" }],
|
|
4642
|
+
[updateGenerated, { operation: "update", single: false, targetArg: "where" }],
|
|
4643
|
+
[updateManyGenerated, { operation: "updateMany", single: false, targetArg: "updates" }],
|
|
4644
|
+
[updateSingleGenerated, { operation: "update", single: true, targetArg: "where" }],
|
|
4645
|
+
[deleteGenerated, { operation: "delete", single: false, targetArg: "where" }],
|
|
4646
|
+
[deleteSingleGenerated, { operation: "delete", single: true, targetArg: "where" }]
|
|
4647
|
+
];
|
|
4648
|
+
for (const [generated, meta] of generatedMutations) {
|
|
4456
4649
|
if (generated) {
|
|
4457
4650
|
mutations[generated.name] = {
|
|
4458
4651
|
type: mutationReturnType,
|
|
4459
4652
|
args: generated.args,
|
|
4460
|
-
resolve: generated.resolver
|
|
4653
|
+
resolve: generated.resolver,
|
|
4654
|
+
extensions: { drizzle: drizzleMeta({ kind: "mutation", ...meta }) }
|
|
4461
4655
|
};
|
|
4462
4656
|
}
|
|
4463
4657
|
}
|
|
@@ -4479,9 +4673,9 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4479
4673
|
}
|
|
4480
4674
|
const activeInputs = [
|
|
4481
4675
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
4482
|
-
...
|
|
4676
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
4483
4677
|
...onConflictInput ? [onConflictInput] : [],
|
|
4484
|
-
...
|
|
4678
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
4485
4679
|
...updateManyInput ? [updateManyInput] : [],
|
|
4486
4680
|
tableFilters,
|
|
4487
4681
|
tableOrder
|
|
@@ -5508,6 +5702,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5508
5702
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
5509
5703
|
const tableEntries = schemaEntries.filter(([key, value]) => (0, import_drizzle_orm8.is)(value, import_pg_core2.PgTable) && !excludedTables.has(key));
|
|
5510
5704
|
const tables = Object.fromEntries(tableEntries);
|
|
5705
|
+
const featureOf = resolveTableFeatures(features);
|
|
5706
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
5511
5707
|
if (!tableEntries.length) {
|
|
5512
5708
|
throw new Error(
|
|
5513
5709
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -5545,7 +5741,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5545
5741
|
complexity,
|
|
5546
5742
|
limits,
|
|
5547
5743
|
docs: options.docs ?? {},
|
|
5548
|
-
|
|
5744
|
+
primaryKeyOf: (name) => tables[name] ? pgPrimaryKeyPropNames(tables[name]) : [],
|
|
5745
|
+
featureOf
|
|
5549
5746
|
};
|
|
5550
5747
|
const nestedPlans = features.nestedWrites ? buildNestedWritePlans(
|
|
5551
5748
|
tables,
|
|
@@ -5556,7 +5753,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5556
5753
|
) : void 0;
|
|
5557
5754
|
const nestedTypes = nestedPlans ? createNestedWriteTypes({ plans: nestedPlans, cacheCtx, typeNameMapper, insertPrefix: prefixes.insert }) : void 0;
|
|
5558
5755
|
const nestedRuntime = nestedPlans ? createNestedWriteRuntime({ plans: nestedPlans, filterCtx }) : void 0;
|
|
5559
|
-
const relationAggregateFactory =
|
|
5756
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
5560
5757
|
const queries = {};
|
|
5561
5758
|
const mutations = {};
|
|
5562
5759
|
const mutationTxCtx = createMutationTxCtx(options.transactions);
|
|
@@ -5574,7 +5771,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5574
5771
|
prefixes.insert,
|
|
5575
5772
|
prefixes.update,
|
|
5576
5773
|
resolverFactory,
|
|
5577
|
-
relationAggregateFactory,
|
|
5774
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0,
|
|
5578
5775
|
nestedTypes
|
|
5579
5776
|
)
|
|
5580
5777
|
])
|
|
@@ -5582,6 +5779,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5582
5779
|
const inputs = {};
|
|
5583
5780
|
const outputs = {};
|
|
5584
5781
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
5782
|
+
const tableFeatures = featureOf(tableName);
|
|
5783
|
+
const drizzleMeta = tableFieldExtensions(tableName, pgPrimaryKeyPropNames(schema[tableName]));
|
|
5585
5784
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
5586
5785
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
5587
5786
|
const {
|
|
@@ -5613,7 +5812,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5613
5812
|
typeName,
|
|
5614
5813
|
typeNameMapper,
|
|
5615
5814
|
filterCtx,
|
|
5616
|
-
|
|
5815
|
+
tableFeatures.distinct,
|
|
5617
5816
|
limits
|
|
5618
5817
|
);
|
|
5619
5818
|
const selectSingleGenerated = generateSelectSingle2(
|
|
@@ -5629,7 +5828,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5629
5828
|
filterCtx,
|
|
5630
5829
|
limits
|
|
5631
5830
|
);
|
|
5632
|
-
const insertArrGenerated =
|
|
5831
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray2(
|
|
5633
5832
|
db,
|
|
5634
5833
|
tableName,
|
|
5635
5834
|
schema[tableName],
|
|
@@ -5644,7 +5843,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5644
5843
|
nestedRuntime,
|
|
5645
5844
|
limits
|
|
5646
5845
|
) : void 0;
|
|
5647
|
-
const insertSingleGenerated =
|
|
5846
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle2(
|
|
5648
5847
|
db,
|
|
5649
5848
|
tableName,
|
|
5650
5849
|
schema[tableName],
|
|
@@ -5659,8 +5858,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5659
5858
|
nestedRuntime,
|
|
5660
5859
|
limits
|
|
5661
5860
|
) : void 0;
|
|
5662
|
-
const uniqueSets =
|
|
5663
|
-
const onConflictInput =
|
|
5861
|
+
const uniqueSets = tableFeatures.upsert ? getUniqueColumnSets(schema[tableName], import_pg_core2.getTableConfig) : [];
|
|
5862
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
5664
5863
|
table: schema[tableName],
|
|
5665
5864
|
typeName,
|
|
5666
5865
|
uniqueSets,
|
|
@@ -5703,7 +5902,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5703
5902
|
nestedRuntime,
|
|
5704
5903
|
limits
|
|
5705
5904
|
) : void 0;
|
|
5706
|
-
const updateGenerated =
|
|
5905
|
+
const updateGenerated = tableFeatures.update ? generateUpdate2(
|
|
5707
5906
|
db,
|
|
5708
5907
|
tableName,
|
|
5709
5908
|
schema[tableName],
|
|
@@ -5714,14 +5913,14 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5714
5913
|
updateFieldName,
|
|
5715
5914
|
typeName,
|
|
5716
5915
|
false,
|
|
5717
|
-
|
|
5916
|
+
tableFeatures.requireWhere,
|
|
5718
5917
|
typeNameMapper,
|
|
5719
5918
|
filterCtx,
|
|
5720
5919
|
mutationTxCtx,
|
|
5721
5920
|
nestedRuntime,
|
|
5722
5921
|
limits
|
|
5723
5922
|
) : void 0;
|
|
5724
|
-
const updateSingleGenerated =
|
|
5923
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate2(
|
|
5725
5924
|
db,
|
|
5726
5925
|
tableName,
|
|
5727
5926
|
schema[tableName],
|
|
@@ -5732,14 +5931,14 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5732
5931
|
updateSingleFieldName,
|
|
5733
5932
|
typeName,
|
|
5734
5933
|
true,
|
|
5735
|
-
|
|
5934
|
+
tableFeatures.requireWhere,
|
|
5736
5935
|
typeNameMapper,
|
|
5737
5936
|
filterCtx,
|
|
5738
5937
|
mutationTxCtx,
|
|
5739
5938
|
nestedRuntime,
|
|
5740
5939
|
limits
|
|
5741
5940
|
) : void 0;
|
|
5742
|
-
const updateManyInput =
|
|
5941
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
5743
5942
|
const updateManyGenerated = updateManyInput ? generateUpdateMany2(
|
|
5744
5943
|
db,
|
|
5745
5944
|
tableName,
|
|
@@ -5755,7 +5954,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5755
5954
|
nestedRuntime,
|
|
5756
5955
|
limits
|
|
5757
5956
|
) : void 0;
|
|
5758
|
-
const deleteGenerated =
|
|
5957
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete2(
|
|
5759
5958
|
db,
|
|
5760
5959
|
tableName,
|
|
5761
5960
|
schema[tableName],
|
|
@@ -5763,12 +5962,12 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5763
5962
|
deleteFieldName,
|
|
5764
5963
|
typeName,
|
|
5765
5964
|
false,
|
|
5766
|
-
|
|
5965
|
+
tableFeatures.requireWhere,
|
|
5767
5966
|
filterCtx,
|
|
5768
5967
|
{ tableName, relationMap: namedRelations, tables },
|
|
5769
5968
|
mutationTxCtx
|
|
5770
5969
|
) : void 0;
|
|
5771
|
-
const deleteSingleGenerated =
|
|
5970
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete2(
|
|
5772
5971
|
db,
|
|
5773
5972
|
tableName,
|
|
5774
5973
|
schema[tableName],
|
|
@@ -5776,12 +5975,12 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5776
5975
|
deleteSingleFieldName,
|
|
5777
5976
|
typeName,
|
|
5778
5977
|
true,
|
|
5779
|
-
|
|
5978
|
+
tableFeatures.requireWhere,
|
|
5780
5979
|
filterCtx,
|
|
5781
5980
|
{ tableName, relationMap: namedRelations, tables },
|
|
5782
5981
|
mutationTxCtx
|
|
5783
5982
|
) : void 0;
|
|
5784
|
-
const updateCountGenerated =
|
|
5983
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
5785
5984
|
db,
|
|
5786
5985
|
tableName,
|
|
5787
5986
|
table: schema[tableName],
|
|
@@ -5789,24 +5988,24 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5789
5988
|
setArgs: updateInput,
|
|
5790
5989
|
filterArgs: tableFilters,
|
|
5791
5990
|
fieldName: updateCountFieldName,
|
|
5792
|
-
requireWhere:
|
|
5991
|
+
requireWhere: tableFeatures.requireWhere,
|
|
5793
5992
|
filterCtx,
|
|
5794
5993
|
txCtx: mutationTxCtx,
|
|
5795
5994
|
nested: nestedRuntime
|
|
5796
5995
|
}) : void 0;
|
|
5797
|
-
const deleteCountGenerated =
|
|
5996
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
5798
5997
|
db,
|
|
5799
5998
|
tableName,
|
|
5800
5999
|
table: schema[tableName],
|
|
5801
6000
|
kind: "delete",
|
|
5802
6001
|
filterArgs: tableFilters,
|
|
5803
6002
|
fieldName: deleteCountFieldName,
|
|
5804
|
-
requireWhere:
|
|
6003
|
+
requireWhere: tableFeatures.requireWhere,
|
|
5805
6004
|
filterCtx,
|
|
5806
6005
|
txCtx: mutationTxCtx
|
|
5807
6006
|
}) : void 0;
|
|
5808
|
-
const aggregateType =
|
|
5809
|
-
const aggregateGenerated =
|
|
6007
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
6008
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
5810
6009
|
db,
|
|
5811
6010
|
tableName,
|
|
5812
6011
|
schema[tableName],
|
|
@@ -5815,7 +6014,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5815
6014
|
tableFilters,
|
|
5816
6015
|
filterCtx
|
|
5817
6016
|
) : void 0;
|
|
5818
|
-
const groupByType =
|
|
6017
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
5819
6018
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
5820
6019
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
5821
6020
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -5833,19 +6032,28 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5833
6032
|
type: selectArrOutput,
|
|
5834
6033
|
args: selectArrGenerated.args,
|
|
5835
6034
|
resolve: selectArrGenerated.resolver,
|
|
5836
|
-
|
|
6035
|
+
extensions: {
|
|
6036
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
6037
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
6038
|
+
}
|
|
5837
6039
|
};
|
|
5838
6040
|
queries[selectSingleGenerated.name] = {
|
|
5839
6041
|
type: selectSingleOutput,
|
|
5840
6042
|
args: selectSingleGenerated.args,
|
|
5841
|
-
resolve: selectSingleGenerated.resolver
|
|
6043
|
+
resolve: selectSingleGenerated.resolver,
|
|
6044
|
+
extensions: {
|
|
6045
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
6046
|
+
}
|
|
5842
6047
|
};
|
|
5843
6048
|
if (aggregateGenerated && aggregateType) {
|
|
5844
6049
|
queries[aggregateGenerated.name] = {
|
|
5845
6050
|
type: new import_graphql9.GraphQLNonNull(aggregateType),
|
|
5846
6051
|
args: aggregateGenerated.args,
|
|
5847
6052
|
resolve: aggregateGenerated.resolver,
|
|
5848
|
-
|
|
6053
|
+
extensions: {
|
|
6054
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
6055
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6056
|
+
}
|
|
5849
6057
|
};
|
|
5850
6058
|
}
|
|
5851
6059
|
if (groupByGenerated && groupByType) {
|
|
@@ -5853,14 +6061,20 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5853
6061
|
type: new import_graphql9.GraphQLNonNull(new import_graphql9.GraphQLList(new import_graphql9.GraphQLNonNull(groupByType))),
|
|
5854
6062
|
args: groupByGenerated.args,
|
|
5855
6063
|
resolve: groupByGenerated.resolver,
|
|
5856
|
-
|
|
6064
|
+
extensions: {
|
|
6065
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
6066
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6067
|
+
}
|
|
5857
6068
|
};
|
|
5858
6069
|
}
|
|
5859
6070
|
if (insertArrGenerated) {
|
|
5860
6071
|
mutations[insertArrGenerated.name] = {
|
|
5861
6072
|
type: arrTableItemOutput,
|
|
5862
6073
|
args: insertArrGenerated.args,
|
|
5863
|
-
resolve: insertArrGenerated.resolver
|
|
6074
|
+
resolve: insertArrGenerated.resolver,
|
|
6075
|
+
extensions: {
|
|
6076
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
6077
|
+
}
|
|
5864
6078
|
};
|
|
5865
6079
|
}
|
|
5866
6080
|
if (insertSingleGenerated) {
|
|
@@ -5869,28 +6083,40 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5869
6083
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
5870
6084
|
type: conflictDoNothing ? singleTableItemOutput : new import_graphql9.GraphQLNonNull(singleTableItemOutput),
|
|
5871
6085
|
args: insertSingleGenerated.args,
|
|
5872
|
-
resolve: insertSingleGenerated.resolver
|
|
6086
|
+
resolve: insertSingleGenerated.resolver,
|
|
6087
|
+
extensions: {
|
|
6088
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
6089
|
+
}
|
|
5873
6090
|
};
|
|
5874
6091
|
}
|
|
5875
6092
|
if (upsertArrGenerated) {
|
|
5876
6093
|
mutations[upsertArrGenerated.name] = {
|
|
5877
6094
|
type: arrTableItemOutput,
|
|
5878
6095
|
args: upsertArrGenerated.args,
|
|
5879
|
-
resolve: upsertArrGenerated.resolver
|
|
6096
|
+
resolve: upsertArrGenerated.resolver,
|
|
6097
|
+
extensions: {
|
|
6098
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
6099
|
+
}
|
|
5880
6100
|
};
|
|
5881
6101
|
}
|
|
5882
6102
|
if (upsertSingleGenerated) {
|
|
5883
6103
|
mutations[upsertSingleGenerated.name] = {
|
|
5884
6104
|
type: singleTableItemOutput,
|
|
5885
6105
|
args: upsertSingleGenerated.args,
|
|
5886
|
-
resolve: upsertSingleGenerated.resolver
|
|
6106
|
+
resolve: upsertSingleGenerated.resolver,
|
|
6107
|
+
extensions: {
|
|
6108
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
6109
|
+
}
|
|
5887
6110
|
};
|
|
5888
6111
|
}
|
|
5889
6112
|
if (updateGenerated) {
|
|
5890
6113
|
mutations[updateGenerated.name] = {
|
|
5891
6114
|
type: arrTableItemOutput,
|
|
5892
6115
|
args: updateGenerated.args,
|
|
5893
|
-
resolve: updateGenerated.resolver
|
|
6116
|
+
resolve: updateGenerated.resolver,
|
|
6117
|
+
extensions: {
|
|
6118
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
6119
|
+
}
|
|
5894
6120
|
};
|
|
5895
6121
|
}
|
|
5896
6122
|
if (updateManyGenerated) {
|
|
@@ -5898,6 +6124,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5898
6124
|
type: new import_graphql9.GraphQLNonNull(new import_graphql9.GraphQLList(singleTableItemOutput)),
|
|
5899
6125
|
args: updateManyGenerated.args,
|
|
5900
6126
|
resolve: updateManyGenerated.resolver,
|
|
6127
|
+
extensions: {
|
|
6128
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
6129
|
+
},
|
|
5901
6130
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
5902
6131
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
5903
6132
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -5908,21 +6137,30 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5908
6137
|
mutations[updateSingleGenerated.name] = {
|
|
5909
6138
|
type: singleTableItemOutput,
|
|
5910
6139
|
args: updateSingleGenerated.args,
|
|
5911
|
-
resolve: updateSingleGenerated.resolver
|
|
6140
|
+
resolve: updateSingleGenerated.resolver,
|
|
6141
|
+
extensions: {
|
|
6142
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
6143
|
+
}
|
|
5912
6144
|
};
|
|
5913
6145
|
}
|
|
5914
6146
|
if (deleteGenerated) {
|
|
5915
6147
|
mutations[deleteGenerated.name] = {
|
|
5916
6148
|
type: arrTableItemOutput,
|
|
5917
6149
|
args: deleteGenerated.args,
|
|
5918
|
-
resolve: deleteGenerated.resolver
|
|
6150
|
+
resolve: deleteGenerated.resolver,
|
|
6151
|
+
extensions: {
|
|
6152
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
6153
|
+
}
|
|
5919
6154
|
};
|
|
5920
6155
|
}
|
|
5921
6156
|
if (deleteSingleGenerated) {
|
|
5922
6157
|
mutations[deleteSingleGenerated.name] = {
|
|
5923
6158
|
type: singleTableItemOutput,
|
|
5924
6159
|
args: deleteSingleGenerated.args,
|
|
5925
|
-
resolve: deleteSingleGenerated.resolver
|
|
6160
|
+
resolve: deleteSingleGenerated.resolver,
|
|
6161
|
+
extensions: {
|
|
6162
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
6163
|
+
}
|
|
5926
6164
|
};
|
|
5927
6165
|
}
|
|
5928
6166
|
if (updateCountGenerated) {
|
|
@@ -5943,9 +6181,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5943
6181
|
}
|
|
5944
6182
|
const activeInputs = [
|
|
5945
6183
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
5946
|
-
...
|
|
6184
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
5947
6185
|
...onConflictInput ? [onConflictInput] : [],
|
|
5948
|
-
...
|
|
6186
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
5949
6187
|
...updateManyInput ? [updateManyInput] : [],
|
|
5950
6188
|
tableFilters,
|
|
5951
6189
|
tableOrder
|
|
@@ -6525,6 +6763,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6525
6763
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
6526
6764
|
const tableEntries = schemaEntries.filter(([key, value]) => (0, import_drizzle_orm9.is)(value, import_sqlite_core2.SQLiteTable) && !excludedTables.has(key));
|
|
6527
6765
|
const tables = Object.fromEntries(tableEntries);
|
|
6766
|
+
const featureOf = resolveTableFeatures(features);
|
|
6767
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
6528
6768
|
if (!tableEntries.length) {
|
|
6529
6769
|
throw new Error(
|
|
6530
6770
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -6562,7 +6802,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6562
6802
|
complexity,
|
|
6563
6803
|
limits,
|
|
6564
6804
|
docs: options.docs ?? {},
|
|
6565
|
-
|
|
6805
|
+
primaryKeyOf: (name) => tables[name] ? sqlitePrimaryKeyPropNames(tables[name]) : [],
|
|
6806
|
+
featureOf
|
|
6566
6807
|
};
|
|
6567
6808
|
if (features.nestedWrites && db.resultKind === "sync") {
|
|
6568
6809
|
throw new Error(
|
|
@@ -6578,7 +6819,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6578
6819
|
) : void 0;
|
|
6579
6820
|
const nestedTypes = nestedPlans ? createNestedWriteTypes({ plans: nestedPlans, cacheCtx, typeNameMapper, insertPrefix: prefixes.insert }) : void 0;
|
|
6580
6821
|
const nestedRuntime = nestedPlans ? createNestedWriteRuntime({ plans: nestedPlans, filterCtx }) : void 0;
|
|
6581
|
-
const relationAggregateFactory =
|
|
6822
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
6582
6823
|
const queries = {};
|
|
6583
6824
|
const mutations = {};
|
|
6584
6825
|
if (options.transactions && db.resultKind === "sync") {
|
|
@@ -6601,7 +6842,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6601
6842
|
prefixes.insert,
|
|
6602
6843
|
prefixes.update,
|
|
6603
6844
|
resolverFactory,
|
|
6604
|
-
relationAggregateFactory,
|
|
6845
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0,
|
|
6605
6846
|
nestedTypes
|
|
6606
6847
|
)
|
|
6607
6848
|
])
|
|
@@ -6609,6 +6850,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6609
6850
|
const inputs = {};
|
|
6610
6851
|
const outputs = {};
|
|
6611
6852
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
6853
|
+
const tableFeatures = featureOf(tableName);
|
|
6854
|
+
const drizzleMeta = tableFieldExtensions(tableName, sqlitePrimaryKeyPropNames(schema[tableName]));
|
|
6612
6855
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
6613
6856
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
6614
6857
|
const {
|
|
@@ -6640,7 +6883,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6640
6883
|
typeName,
|
|
6641
6884
|
typeNameMapper,
|
|
6642
6885
|
filterCtx,
|
|
6643
|
-
|
|
6886
|
+
tableFeatures.distinct,
|
|
6644
6887
|
limits
|
|
6645
6888
|
);
|
|
6646
6889
|
const selectSingleGenerated = generateSelectSingle3(
|
|
@@ -6656,7 +6899,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6656
6899
|
filterCtx,
|
|
6657
6900
|
limits
|
|
6658
6901
|
);
|
|
6659
|
-
const insertArrGenerated =
|
|
6902
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray3(
|
|
6660
6903
|
db,
|
|
6661
6904
|
tableName,
|
|
6662
6905
|
schema[tableName],
|
|
@@ -6671,7 +6914,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6671
6914
|
nestedRuntime,
|
|
6672
6915
|
limits
|
|
6673
6916
|
) : void 0;
|
|
6674
|
-
const insertSingleGenerated =
|
|
6917
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle3(
|
|
6675
6918
|
db,
|
|
6676
6919
|
tableName,
|
|
6677
6920
|
schema[tableName],
|
|
@@ -6686,8 +6929,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6686
6929
|
nestedRuntime,
|
|
6687
6930
|
limits
|
|
6688
6931
|
) : void 0;
|
|
6689
|
-
const uniqueSets =
|
|
6690
|
-
const onConflictInput =
|
|
6932
|
+
const uniqueSets = tableFeatures.upsert ? getUniqueColumnSets(schema[tableName], import_sqlite_core2.getTableConfig) : [];
|
|
6933
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
6691
6934
|
table: schema[tableName],
|
|
6692
6935
|
typeName,
|
|
6693
6936
|
uniqueSets,
|
|
@@ -6730,7 +6973,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6730
6973
|
nestedRuntime,
|
|
6731
6974
|
limits
|
|
6732
6975
|
) : void 0;
|
|
6733
|
-
const updateGenerated =
|
|
6976
|
+
const updateGenerated = tableFeatures.update ? generateUpdate3(
|
|
6734
6977
|
db,
|
|
6735
6978
|
tableName,
|
|
6736
6979
|
schema[tableName],
|
|
@@ -6741,14 +6984,14 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6741
6984
|
updateFieldName,
|
|
6742
6985
|
typeName,
|
|
6743
6986
|
false,
|
|
6744
|
-
|
|
6987
|
+
tableFeatures.requireWhere,
|
|
6745
6988
|
typeNameMapper,
|
|
6746
6989
|
filterCtx,
|
|
6747
6990
|
mutationTxCtx,
|
|
6748
6991
|
nestedRuntime,
|
|
6749
6992
|
limits
|
|
6750
6993
|
) : void 0;
|
|
6751
|
-
const updateSingleGenerated =
|
|
6994
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate3(
|
|
6752
6995
|
db,
|
|
6753
6996
|
tableName,
|
|
6754
6997
|
schema[tableName],
|
|
@@ -6759,14 +7002,14 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6759
7002
|
updateSingleFieldName,
|
|
6760
7003
|
typeName,
|
|
6761
7004
|
true,
|
|
6762
|
-
|
|
7005
|
+
tableFeatures.requireWhere,
|
|
6763
7006
|
typeNameMapper,
|
|
6764
7007
|
filterCtx,
|
|
6765
7008
|
mutationTxCtx,
|
|
6766
7009
|
nestedRuntime,
|
|
6767
7010
|
limits
|
|
6768
7011
|
) : void 0;
|
|
6769
|
-
const updateManyInput =
|
|
7012
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
6770
7013
|
const updateManyGenerated = updateManyInput ? generateUpdateMany3(
|
|
6771
7014
|
db,
|
|
6772
7015
|
tableName,
|
|
@@ -6782,7 +7025,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6782
7025
|
nestedRuntime,
|
|
6783
7026
|
limits
|
|
6784
7027
|
) : void 0;
|
|
6785
|
-
const deleteGenerated =
|
|
7028
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete3(
|
|
6786
7029
|
db,
|
|
6787
7030
|
tableName,
|
|
6788
7031
|
schema[tableName],
|
|
@@ -6790,12 +7033,12 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6790
7033
|
deleteFieldName,
|
|
6791
7034
|
typeName,
|
|
6792
7035
|
false,
|
|
6793
|
-
|
|
7036
|
+
tableFeatures.requireWhere,
|
|
6794
7037
|
filterCtx,
|
|
6795
7038
|
{ tableName, relationMap: namedRelations, tables },
|
|
6796
7039
|
mutationTxCtx
|
|
6797
7040
|
) : void 0;
|
|
6798
|
-
const deleteSingleGenerated =
|
|
7041
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete3(
|
|
6799
7042
|
db,
|
|
6800
7043
|
tableName,
|
|
6801
7044
|
schema[tableName],
|
|
@@ -6803,12 +7046,12 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6803
7046
|
deleteSingleFieldName,
|
|
6804
7047
|
typeName,
|
|
6805
7048
|
true,
|
|
6806
|
-
|
|
7049
|
+
tableFeatures.requireWhere,
|
|
6807
7050
|
filterCtx,
|
|
6808
7051
|
{ tableName, relationMap: namedRelations, tables },
|
|
6809
7052
|
mutationTxCtx
|
|
6810
7053
|
) : void 0;
|
|
6811
|
-
const updateCountGenerated =
|
|
7054
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
6812
7055
|
db,
|
|
6813
7056
|
tableName,
|
|
6814
7057
|
table: schema[tableName],
|
|
@@ -6816,24 +7059,24 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6816
7059
|
setArgs: updateInput,
|
|
6817
7060
|
filterArgs: tableFilters,
|
|
6818
7061
|
fieldName: updateCountFieldName,
|
|
6819
|
-
requireWhere:
|
|
7062
|
+
requireWhere: tableFeatures.requireWhere,
|
|
6820
7063
|
filterCtx,
|
|
6821
7064
|
txCtx: mutationTxCtx,
|
|
6822
7065
|
nested: nestedRuntime
|
|
6823
7066
|
}) : void 0;
|
|
6824
|
-
const deleteCountGenerated =
|
|
7067
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
6825
7068
|
db,
|
|
6826
7069
|
tableName,
|
|
6827
7070
|
table: schema[tableName],
|
|
6828
7071
|
kind: "delete",
|
|
6829
7072
|
filterArgs: tableFilters,
|
|
6830
7073
|
fieldName: deleteCountFieldName,
|
|
6831
|
-
requireWhere:
|
|
7074
|
+
requireWhere: tableFeatures.requireWhere,
|
|
6832
7075
|
filterCtx,
|
|
6833
7076
|
txCtx: mutationTxCtx
|
|
6834
7077
|
}) : void 0;
|
|
6835
|
-
const aggregateType =
|
|
6836
|
-
const aggregateGenerated =
|
|
7078
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
7079
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
6837
7080
|
db,
|
|
6838
7081
|
tableName,
|
|
6839
7082
|
schema[tableName],
|
|
@@ -6842,7 +7085,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6842
7085
|
tableFilters,
|
|
6843
7086
|
filterCtx
|
|
6844
7087
|
) : void 0;
|
|
6845
|
-
const groupByType =
|
|
7088
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
6846
7089
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
6847
7090
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
6848
7091
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -6860,19 +7103,28 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6860
7103
|
type: selectArrOutput,
|
|
6861
7104
|
args: selectArrGenerated.args,
|
|
6862
7105
|
resolve: selectArrGenerated.resolver,
|
|
6863
|
-
|
|
7106
|
+
extensions: {
|
|
7107
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
7108
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
7109
|
+
}
|
|
6864
7110
|
};
|
|
6865
7111
|
queries[selectSingleGenerated.name] = {
|
|
6866
7112
|
type: selectSingleOutput,
|
|
6867
7113
|
args: selectSingleGenerated.args,
|
|
6868
|
-
resolve: selectSingleGenerated.resolver
|
|
7114
|
+
resolve: selectSingleGenerated.resolver,
|
|
7115
|
+
extensions: {
|
|
7116
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
7117
|
+
}
|
|
6869
7118
|
};
|
|
6870
7119
|
if (aggregateGenerated && aggregateType) {
|
|
6871
7120
|
queries[aggregateGenerated.name] = {
|
|
6872
7121
|
type: new import_graphql10.GraphQLNonNull(aggregateType),
|
|
6873
7122
|
args: aggregateGenerated.args,
|
|
6874
7123
|
resolve: aggregateGenerated.resolver,
|
|
6875
|
-
|
|
7124
|
+
extensions: {
|
|
7125
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
7126
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7127
|
+
}
|
|
6876
7128
|
};
|
|
6877
7129
|
}
|
|
6878
7130
|
if (groupByGenerated && groupByType) {
|
|
@@ -6880,14 +7132,20 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6880
7132
|
type: new import_graphql10.GraphQLNonNull(new import_graphql10.GraphQLList(new import_graphql10.GraphQLNonNull(groupByType))),
|
|
6881
7133
|
args: groupByGenerated.args,
|
|
6882
7134
|
resolve: groupByGenerated.resolver,
|
|
6883
|
-
|
|
7135
|
+
extensions: {
|
|
7136
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
7137
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7138
|
+
}
|
|
6884
7139
|
};
|
|
6885
7140
|
}
|
|
6886
7141
|
if (insertArrGenerated) {
|
|
6887
7142
|
mutations[insertArrGenerated.name] = {
|
|
6888
7143
|
type: arrTableItemOutput,
|
|
6889
7144
|
args: insertArrGenerated.args,
|
|
6890
|
-
resolve: insertArrGenerated.resolver
|
|
7145
|
+
resolve: insertArrGenerated.resolver,
|
|
7146
|
+
extensions: {
|
|
7147
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
7148
|
+
}
|
|
6891
7149
|
};
|
|
6892
7150
|
}
|
|
6893
7151
|
if (insertSingleGenerated) {
|
|
@@ -6896,28 +7154,40 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6896
7154
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
6897
7155
|
type: conflictDoNothing ? singleTableItemOutput : new import_graphql10.GraphQLNonNull(singleTableItemOutput),
|
|
6898
7156
|
args: insertSingleGenerated.args,
|
|
6899
|
-
resolve: insertSingleGenerated.resolver
|
|
7157
|
+
resolve: insertSingleGenerated.resolver,
|
|
7158
|
+
extensions: {
|
|
7159
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
7160
|
+
}
|
|
6900
7161
|
};
|
|
6901
7162
|
}
|
|
6902
7163
|
if (upsertArrGenerated) {
|
|
6903
7164
|
mutations[upsertArrGenerated.name] = {
|
|
6904
7165
|
type: arrTableItemOutput,
|
|
6905
7166
|
args: upsertArrGenerated.args,
|
|
6906
|
-
resolve: upsertArrGenerated.resolver
|
|
7167
|
+
resolve: upsertArrGenerated.resolver,
|
|
7168
|
+
extensions: {
|
|
7169
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
7170
|
+
}
|
|
6907
7171
|
};
|
|
6908
7172
|
}
|
|
6909
7173
|
if (upsertSingleGenerated) {
|
|
6910
7174
|
mutations[upsertSingleGenerated.name] = {
|
|
6911
7175
|
type: singleTableItemOutput,
|
|
6912
7176
|
args: upsertSingleGenerated.args,
|
|
6913
|
-
resolve: upsertSingleGenerated.resolver
|
|
7177
|
+
resolve: upsertSingleGenerated.resolver,
|
|
7178
|
+
extensions: {
|
|
7179
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
7180
|
+
}
|
|
6914
7181
|
};
|
|
6915
7182
|
}
|
|
6916
7183
|
if (updateGenerated) {
|
|
6917
7184
|
mutations[updateGenerated.name] = {
|
|
6918
7185
|
type: arrTableItemOutput,
|
|
6919
7186
|
args: updateGenerated.args,
|
|
6920
|
-
resolve: updateGenerated.resolver
|
|
7187
|
+
resolve: updateGenerated.resolver,
|
|
7188
|
+
extensions: {
|
|
7189
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
7190
|
+
}
|
|
6921
7191
|
};
|
|
6922
7192
|
}
|
|
6923
7193
|
if (updateManyGenerated) {
|
|
@@ -6925,6 +7195,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6925
7195
|
type: new import_graphql10.GraphQLNonNull(new import_graphql10.GraphQLList(singleTableItemOutput)),
|
|
6926
7196
|
args: updateManyGenerated.args,
|
|
6927
7197
|
resolve: updateManyGenerated.resolver,
|
|
7198
|
+
extensions: {
|
|
7199
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
7200
|
+
},
|
|
6928
7201
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
6929
7202
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
6930
7203
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -6935,21 +7208,30 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6935
7208
|
mutations[updateSingleGenerated.name] = {
|
|
6936
7209
|
type: singleTableItemOutput,
|
|
6937
7210
|
args: updateSingleGenerated.args,
|
|
6938
|
-
resolve: updateSingleGenerated.resolver
|
|
7211
|
+
resolve: updateSingleGenerated.resolver,
|
|
7212
|
+
extensions: {
|
|
7213
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
7214
|
+
}
|
|
6939
7215
|
};
|
|
6940
7216
|
}
|
|
6941
7217
|
if (deleteGenerated) {
|
|
6942
7218
|
mutations[deleteGenerated.name] = {
|
|
6943
7219
|
type: arrTableItemOutput,
|
|
6944
7220
|
args: deleteGenerated.args,
|
|
6945
|
-
resolve: deleteGenerated.resolver
|
|
7221
|
+
resolve: deleteGenerated.resolver,
|
|
7222
|
+
extensions: {
|
|
7223
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
7224
|
+
}
|
|
6946
7225
|
};
|
|
6947
7226
|
}
|
|
6948
7227
|
if (deleteSingleGenerated) {
|
|
6949
7228
|
mutations[deleteSingleGenerated.name] = {
|
|
6950
7229
|
type: singleTableItemOutput,
|
|
6951
7230
|
args: deleteSingleGenerated.args,
|
|
6952
|
-
resolve: deleteSingleGenerated.resolver
|
|
7231
|
+
resolve: deleteSingleGenerated.resolver,
|
|
7232
|
+
extensions: {
|
|
7233
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
7234
|
+
}
|
|
6953
7235
|
};
|
|
6954
7236
|
}
|
|
6955
7237
|
if (updateCountGenerated) {
|
|
@@ -6970,9 +7252,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6970
7252
|
}
|
|
6971
7253
|
const activeInputs = [
|
|
6972
7254
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
6973
|
-
...
|
|
7255
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
6974
7256
|
...onConflictInput ? [onConflictInput] : [],
|
|
6975
|
-
...
|
|
7257
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
6976
7258
|
...updateManyInput ? [updateManyInput] : [],
|
|
6977
7259
|
tableFilters,
|
|
6978
7260
|
tableOrder
|
|
@@ -7012,6 +7294,141 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7012
7294
|
return { queries, mutations, inputs, types: outputs, fieldResolvers };
|
|
7013
7295
|
};
|
|
7014
7296
|
|
|
7297
|
+
// src/util/selection.ts
|
|
7298
|
+
var import_drizzle_orm10 = require("drizzle-orm");
|
|
7299
|
+
var import_mysql_core3 = require("drizzle-orm/mysql-core");
|
|
7300
|
+
var import_pg_core3 = require("drizzle-orm/pg-core");
|
|
7301
|
+
var import_sqlite_core3 = require("drizzle-orm/sqlite-core");
|
|
7302
|
+
var import_graphql_parse_resolve_info5 = require("graphql-parse-resolve-info");
|
|
7303
|
+
var contextCache = /* @__PURE__ */ new WeakMap();
|
|
7304
|
+
var tableConfigFor = (db) => {
|
|
7305
|
+
if ((0, import_drizzle_orm10.is)(db, import_mysql_core3.MySqlDatabase)) {
|
|
7306
|
+
return import_mysql_core3.getTableConfig;
|
|
7307
|
+
}
|
|
7308
|
+
if ((0, import_drizzle_orm10.is)(db, import_pg_core3.PgAsyncDatabase)) {
|
|
7309
|
+
return import_pg_core3.getTableConfig;
|
|
7310
|
+
}
|
|
7311
|
+
if ((0, import_drizzle_orm10.is)(db, import_sqlite_core3.BaseSQLiteDatabase)) {
|
|
7312
|
+
return import_sqlite_core3.getTableConfig;
|
|
7313
|
+
}
|
|
7314
|
+
throw new Error("Drizzle-GraphQL Error: unsupported database instance \u2014 expected a PostgreSQL, MySQL or SQLite one.");
|
|
7315
|
+
};
|
|
7316
|
+
var contextFor = (db) => {
|
|
7317
|
+
const cached = contextCache.get(db);
|
|
7318
|
+
if (cached) {
|
|
7319
|
+
return cached;
|
|
7320
|
+
}
|
|
7321
|
+
const relations = db._.relations ?? {};
|
|
7322
|
+
const schema = db._.fullSchema ?? Object.fromEntries(
|
|
7323
|
+
Object.entries(relations).filter(([, config]) => config?.table != null).map(([key, config]) => [key, config.table])
|
|
7324
|
+
);
|
|
7325
|
+
const tableEntries = Object.entries(schema).filter(([, value]) => (0, import_drizzle_orm10.is)(value, import_drizzle_orm10.Table));
|
|
7326
|
+
if (!tableEntries.length) {
|
|
7327
|
+
throw new Error(
|
|
7328
|
+
"Drizzle-GraphQL Error: Schema not found in drizzle instance. Pass relations (from buildRelations/defineRelations) to the drizzle constructor so drizzle-graphql can read your tables."
|
|
7329
|
+
);
|
|
7330
|
+
}
|
|
7331
|
+
const tables = Object.fromEntries(tableEntries);
|
|
7332
|
+
const getTableConfig4 = tableConfigFor(db);
|
|
7333
|
+
const primaryKeyCache = /* @__PURE__ */ new Map();
|
|
7334
|
+
const primaryKeyOf = (tableName) => {
|
|
7335
|
+
let pk = primaryKeyCache.get(tableName);
|
|
7336
|
+
if (!pk) {
|
|
7337
|
+
const table = tables[tableName];
|
|
7338
|
+
pk = table ? getPrimaryKeyPropNamesFromConfig(table, getTableConfig4) : [];
|
|
7339
|
+
primaryKeyCache.set(tableName, pk);
|
|
7340
|
+
}
|
|
7341
|
+
return pk;
|
|
7342
|
+
};
|
|
7343
|
+
const relationMap = buildNamedRelations(relations, tableEntries);
|
|
7344
|
+
attachTargetPrimaryKeys(relationMap, tables, (table) => [...primaryKeyOf(tableNameOf(tables, table))]);
|
|
7345
|
+
const context = {
|
|
7346
|
+
tables,
|
|
7347
|
+
relationMap,
|
|
7348
|
+
filterCtx: { tables, relationMap },
|
|
7349
|
+
primaryKeyOf
|
|
7350
|
+
};
|
|
7351
|
+
contextCache.set(db, context);
|
|
7352
|
+
return context;
|
|
7353
|
+
};
|
|
7354
|
+
var tableNameOf = (tables, table) => Object.keys(tables).find((name) => tables[name] === table) ?? "";
|
|
7355
|
+
var parseInfo = (info) => {
|
|
7356
|
+
if ("fieldsByTypeName" in info) {
|
|
7357
|
+
return info;
|
|
7358
|
+
}
|
|
7359
|
+
return (0, import_graphql_parse_resolve_info5.parseResolveInfo)(info, { deep: true });
|
|
7360
|
+
};
|
|
7361
|
+
var selectionToWith = (info, options) => {
|
|
7362
|
+
const { db, table, typeNameMapper } = options;
|
|
7363
|
+
const { tables, relationMap, filterCtx } = contextFor(db);
|
|
7364
|
+
if (!tables[table]) {
|
|
7365
|
+
throw new Error(`Drizzle-GraphQL Error: '${table}' is not a table in the Drizzle schema.`);
|
|
7366
|
+
}
|
|
7367
|
+
if (!relationMap[table]) {
|
|
7368
|
+
return void 0;
|
|
7369
|
+
}
|
|
7370
|
+
const parsed = parseInfo(info);
|
|
7371
|
+
const params = extractRelationsParams(
|
|
7372
|
+
relationMap,
|
|
7373
|
+
tables,
|
|
7374
|
+
table,
|
|
7375
|
+
parsed,
|
|
7376
|
+
resolveTypeName(table, typeNameMapper),
|
|
7377
|
+
typeNameMapper,
|
|
7378
|
+
filterCtx
|
|
7379
|
+
);
|
|
7380
|
+
return params && Object.keys(params).length ? params : void 0;
|
|
7381
|
+
};
|
|
7382
|
+
var resolveSelection = async (info, options) => {
|
|
7383
|
+
const {
|
|
7384
|
+
db,
|
|
7385
|
+
table: tableName,
|
|
7386
|
+
typeNameMapper,
|
|
7387
|
+
executor,
|
|
7388
|
+
single = false,
|
|
7389
|
+
where,
|
|
7390
|
+
orderBy,
|
|
7391
|
+
limit,
|
|
7392
|
+
offset,
|
|
7393
|
+
after
|
|
7394
|
+
} = options;
|
|
7395
|
+
const { tables, relationMap, filterCtx, primaryKeyOf } = contextFor(db);
|
|
7396
|
+
const table = tables[tableName];
|
|
7397
|
+
if (!table) {
|
|
7398
|
+
throw new Error(`Drizzle-GraphQL Error: '${tableName}' is not a table in the Drizzle schema.`);
|
|
7399
|
+
}
|
|
7400
|
+
const parsedInfo = parseInfo(info);
|
|
7401
|
+
if (!parsedInfo) {
|
|
7402
|
+
throw new Error("Drizzle-GraphQL Error: resolveSelection could not read a selection set from the resolve info.");
|
|
7403
|
+
}
|
|
7404
|
+
const source = executor ?? db;
|
|
7405
|
+
const queryBase = source.query?.[tableName];
|
|
7406
|
+
if (!queryBase) {
|
|
7407
|
+
throw new Error(
|
|
7408
|
+
`Drizzle-GraphQL Error: the executor passed to resolveSelection has no relational query builder for '${tableName}'.`
|
|
7409
|
+
);
|
|
7410
|
+
}
|
|
7411
|
+
return runRelationalSelect({
|
|
7412
|
+
queryBase,
|
|
7413
|
+
tables,
|
|
7414
|
+
tableName,
|
|
7415
|
+
table,
|
|
7416
|
+
relationMap,
|
|
7417
|
+
typeName: resolveTypeName(tableName, typeNameMapper),
|
|
7418
|
+
typeNameMapper,
|
|
7419
|
+
parsedInfo,
|
|
7420
|
+
single,
|
|
7421
|
+
where,
|
|
7422
|
+
orderBy,
|
|
7423
|
+
limit,
|
|
7424
|
+
offset,
|
|
7425
|
+
after,
|
|
7426
|
+
filterCtx,
|
|
7427
|
+
pkNames: primaryKeyOf(tableName),
|
|
7428
|
+
db: source
|
|
7429
|
+
});
|
|
7430
|
+
};
|
|
7431
|
+
|
|
7015
7432
|
// src/index.ts
|
|
7016
7433
|
var buildSchema = (db, config) => {
|
|
7017
7434
|
const relations = db._.relations;
|
|
@@ -7033,22 +7450,11 @@ var buildSchema = (db, config) => {
|
|
|
7033
7450
|
list: config?.suffixes?.list ?? "",
|
|
7034
7451
|
single: config?.suffixes?.single ?? "Single"
|
|
7035
7452
|
};
|
|
7036
|
-
const typeNameMapper = config?.typeNameMapper;
|
|
7037
|
-
const
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
distinct: config?.features?.distinct ?? true,
|
|
7042
|
-
insert: config?.features?.insert ?? true,
|
|
7043
|
-
update: config?.features?.update ?? true,
|
|
7044
|
-
updateMany: config?.features?.updateMany ?? true,
|
|
7045
|
-
delete: config?.features?.delete ?? true,
|
|
7046
|
-
upsert: config?.features?.upsert ?? false,
|
|
7047
|
-
nestedWrites: config?.features?.nestedWrites ?? false,
|
|
7048
|
-
fieldUpdateOperations: config?.features?.fieldUpdateOperations ?? false,
|
|
7049
|
-
countMutations: config?.features?.countMutations ?? false,
|
|
7050
|
-
requireWhere: config?.features?.requireWhere ?? false
|
|
7051
|
-
};
|
|
7453
|
+
const typeNameMapper = config?.typeNameMapper === "singularize" ? singularizeMapper : config?.typeNameMapper;
|
|
7454
|
+
const tableKeys = Object.entries(schema).filter(([, value]) => (0, import_drizzle_orm11.is)(value, import_drizzle_orm11.Table)).map(([key]) => key);
|
|
7455
|
+
const excludedTableNames = new Set(config?.exclude?.tables ?? []);
|
|
7456
|
+
const featureTables = tableKeys.filter((key) => !excludedTableNames.has(key));
|
|
7457
|
+
const forTable = resolveTableFeatures(config?.features);
|
|
7052
7458
|
const complexityConfig = config?.complexity ?? true;
|
|
7053
7459
|
const complexity = complexityConfig === false ? void 0 : {
|
|
7054
7460
|
defaultListSize: (complexityConfig === true ? void 0 : complexityConfig.defaultListSize) ?? 10,
|
|
@@ -7085,10 +7491,8 @@ var buildSchema = (db, config) => {
|
|
|
7085
7491
|
} : void 0;
|
|
7086
7492
|
const exclude = config?.exclude;
|
|
7087
7493
|
if (exclude) {
|
|
7088
|
-
const tableNames = new Set(
|
|
7089
|
-
|
|
7090
|
-
);
|
|
7091
|
-
const excludedTables = new Set(exclude.tables ?? []);
|
|
7494
|
+
const tableNames = new Set(tableKeys);
|
|
7495
|
+
const excludedTables = excludedTableNames;
|
|
7092
7496
|
for (const tableName of excludedTables) {
|
|
7093
7497
|
if (!tableNames.has(tableName)) {
|
|
7094
7498
|
throw new Error(
|
|
@@ -7110,7 +7514,7 @@ var buildSchema = (db, config) => {
|
|
|
7110
7514
|
if (excludedTables.has(tableName)) {
|
|
7111
7515
|
continue;
|
|
7112
7516
|
}
|
|
7113
|
-
const columns = (0,
|
|
7517
|
+
const columns = (0, import_drizzle_orm11.getColumns)(schema[tableName]);
|
|
7114
7518
|
for (const columnName of columnNames) {
|
|
7115
7519
|
const column = columns[columnName];
|
|
7116
7520
|
if (!column) {
|
|
@@ -7126,6 +7530,49 @@ var buildSchema = (db, config) => {
|
|
|
7126
7530
|
}
|
|
7127
7531
|
}
|
|
7128
7532
|
}
|
|
7533
|
+
const featureConflicts = /* @__PURE__ */ new Map();
|
|
7534
|
+
const noteConflict = (message, tableName) => {
|
|
7535
|
+
const tables = featureConflicts.get(message);
|
|
7536
|
+
if (tables) {
|
|
7537
|
+
tables.push(tableName);
|
|
7538
|
+
} else {
|
|
7539
|
+
featureConflicts.set(message, [tableName]);
|
|
7540
|
+
}
|
|
7541
|
+
};
|
|
7542
|
+
for (const tableName of featureTables) {
|
|
7543
|
+
const tableFeatures = forTable(tableName);
|
|
7544
|
+
if (tableFeatures.upsert) {
|
|
7545
|
+
const missing = [!tableFeatures.insert ? "insert" : void 0, !tableFeatures.update ? "update" : void 0].filter(Boolean).join(" and ");
|
|
7546
|
+
if (missing) {
|
|
7547
|
+
noteConflict(
|
|
7548
|
+
`upsert is on while ${missing} is off, so the upsert mutations are a second write path past the operation you turned off`,
|
|
7549
|
+
tableName
|
|
7550
|
+
);
|
|
7551
|
+
}
|
|
7552
|
+
}
|
|
7553
|
+
if (config?.features?.nestedWrites && (!tableFeatures.insert || !tableFeatures.update)) {
|
|
7554
|
+
noteConflict(
|
|
7555
|
+
"nestedWrites is on while this table's own insert or update is off, so a nested `create` or `connect` under another table's mutation can still write it",
|
|
7556
|
+
tableName
|
|
7557
|
+
);
|
|
7558
|
+
}
|
|
7559
|
+
if (config?.features?.updateMany !== void 0 && tableFeatures.updateMany && !tableFeatures.update) {
|
|
7560
|
+
noteConflict("updateMany is on while update is off, so no batch update is generated", tableName);
|
|
7561
|
+
}
|
|
7562
|
+
if (config?.features?.groupBy !== void 0 && tableFeatures.groupBy && !tableFeatures.aggregates) {
|
|
7563
|
+
noteConflict("groupBy is on while aggregates is off, so no grouped query is generated", tableName);
|
|
7564
|
+
}
|
|
7565
|
+
if (tableFeatures.countMutations && !tableFeatures.update && !tableFeatures.delete) {
|
|
7566
|
+
noteConflict(
|
|
7567
|
+
"countMutations is on while update and delete are both off, so no count mutation is generated",
|
|
7568
|
+
tableName
|
|
7569
|
+
);
|
|
7570
|
+
}
|
|
7571
|
+
}
|
|
7572
|
+
for (const [message, tables] of featureConflicts) {
|
|
7573
|
+
const listed = tables.length > 5 ? `${tables.slice(0, 5).join(", ")} and ${tables.length - 5} more` : tables.join(", ");
|
|
7574
|
+
console.warn(`Drizzle-GraphQL Warning: config.features \u2014 ${message} (${listed}).`);
|
|
7575
|
+
}
|
|
7129
7576
|
const eagerOpt = config?.eagerLoadRelations;
|
|
7130
7577
|
const shouldEagerLoad = eagerOpt === void 0 || eagerOpt === true ? () => true : eagerOpt === false ? () => false : eagerOpt;
|
|
7131
7578
|
if (!typeNameMapper && suffixes.list === suffixes.single) {
|
|
@@ -7152,7 +7599,7 @@ var buildSchema = (db, config) => {
|
|
|
7152
7599
|
conflictDoNothing: config?.conflictDoNothing ?? false,
|
|
7153
7600
|
typeNameMapper,
|
|
7154
7601
|
shouldEagerLoad,
|
|
7155
|
-
features,
|
|
7602
|
+
features: config?.features ?? {},
|
|
7156
7603
|
complexity,
|
|
7157
7604
|
scalars: config?.scalars,
|
|
7158
7605
|
mapColumnType: config?.mapColumnType,
|
|
@@ -7168,11 +7615,11 @@ var buildSchema = (db, config) => {
|
|
|
7168
7615
|
}
|
|
7169
7616
|
};
|
|
7170
7617
|
let generatorOutput;
|
|
7171
|
-
if ((0,
|
|
7618
|
+
if ((0, import_drizzle_orm11.is)(db, import_mysql_core4.MySqlDatabase)) {
|
|
7172
7619
|
generatorOutput = generateSchemaData(db, schema, relations, generatorOptions);
|
|
7173
|
-
} else if ((0,
|
|
7620
|
+
} else if ((0, import_drizzle_orm11.is)(db, import_pg_core4.PgAsyncDatabase)) {
|
|
7174
7621
|
generatorOutput = generateSchemaData2(db, schema, relations, generatorOptions);
|
|
7175
|
-
} else if ((0,
|
|
7622
|
+
} else if ((0, import_drizzle_orm11.is)(db, import_sqlite_core4.BaseSQLiteDatabase)) {
|
|
7176
7623
|
generatorOutput = generateSchemaData3(db, schema, relations, generatorOptions);
|
|
7177
7624
|
} else {
|
|
7178
7625
|
throw new Error("Drizzle-GraphQL Error: Unknown database instance type");
|
|
@@ -7212,8 +7659,14 @@ var buildSchema = (db, config) => {
|
|
|
7212
7659
|
createRelationResolverFactory,
|
|
7213
7660
|
defaultErrorMapper,
|
|
7214
7661
|
drizzleExecutorKey,
|
|
7662
|
+
drizzleExtension,
|
|
7215
7663
|
extractFilters,
|
|
7216
7664
|
extractOrderBy,
|
|
7217
|
-
extractRelationJoinColumns
|
|
7665
|
+
extractRelationJoinColumns,
|
|
7666
|
+
identifyRows,
|
|
7667
|
+
isDrizzleFieldExtension,
|
|
7668
|
+
resolveSelection,
|
|
7669
|
+
selectionToWith,
|
|
7670
|
+
singularizeMapper
|
|
7218
7671
|
});
|
|
7219
7672
|
//# sourceMappingURL=index.cjs.map
|