@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.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { getColumns as getColumns6, is as
|
|
3
|
-
import { MySqlDatabase } from "drizzle-orm/mysql-core";
|
|
4
|
-
import { PgAsyncDatabase } from "drizzle-orm/pg-core";
|
|
5
|
-
import { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";
|
|
2
|
+
import { getColumns as getColumns6, is as is9, Table as Table2 } from "drizzle-orm";
|
|
3
|
+
import { MySqlDatabase as MySqlDatabase2 } from "drizzle-orm/mysql-core";
|
|
4
|
+
import { PgAsyncDatabase as PgAsyncDatabase2 } from "drizzle-orm/pg-core";
|
|
5
|
+
import { BaseSQLiteDatabase as BaseSQLiteDatabase2 } from "drizzle-orm/sqlite-core";
|
|
6
6
|
import {
|
|
7
7
|
GraphQLObjectType as GraphQLObjectType5,
|
|
8
8
|
GraphQLSchema
|
|
@@ -103,6 +103,10 @@ var getOrCreateLoader = (context, key, batchFn) => {
|
|
|
103
103
|
import pluralize from "pluralize";
|
|
104
104
|
var uncapitalize = (input) => input?.length ? `${input[0].toLocaleLowerCase()}${input.length > 1 ? input.slice(1, input.length) : ""}` : input;
|
|
105
105
|
var capitalize = (input) => input?.length ? `${input[0].toLocaleUpperCase()}${input.length > 1 ? input.slice(1, input.length) : ""}` : input;
|
|
106
|
+
var singularizeMapper = (tableName) => ({
|
|
107
|
+
singular: uncapitalize(pluralize.singular(tableName)),
|
|
108
|
+
plural: uncapitalize(pluralize.plural(tableName))
|
|
109
|
+
});
|
|
106
110
|
|
|
107
111
|
// src/util/data-mappers/index.ts
|
|
108
112
|
import { getTableColumns as getTableColumns2, is as is2, One } from "drizzle-orm";
|
|
@@ -602,6 +606,123 @@ var remapFromGraphQLArrayInput = (queryInput, table) => {
|
|
|
602
606
|
return queryInput;
|
|
603
607
|
};
|
|
604
608
|
|
|
609
|
+
// src/util/extensions.ts
|
|
610
|
+
var drizzleExtension = (target) => {
|
|
611
|
+
const value = target?.extensions?.drizzle;
|
|
612
|
+
return value && typeof value === "object" ? value : void 0;
|
|
613
|
+
};
|
|
614
|
+
var isDrizzleFieldExtension = (value) => !!value && value.kind !== "type";
|
|
615
|
+
var tableFieldExtensions = (table, primaryKey) => (meta) => ({
|
|
616
|
+
table,
|
|
617
|
+
primaryKey,
|
|
618
|
+
...meta
|
|
619
|
+
});
|
|
620
|
+
var tableTypeExtension = (table, primaryKey) => ({
|
|
621
|
+
table,
|
|
622
|
+
kind: "type",
|
|
623
|
+
primaryKey
|
|
624
|
+
});
|
|
625
|
+
var relationFieldExtension = (params) => ({
|
|
626
|
+
table: params.targetTable,
|
|
627
|
+
kind: params.aggregate ? "aggregate" : "relation",
|
|
628
|
+
operation: params.aggregate ? "relationAggregate" : "relation",
|
|
629
|
+
// An aggregate over a to-many relation still resolves to a single aggregate object.
|
|
630
|
+
single: params.aggregate ? true : params.single,
|
|
631
|
+
targetArg: "where",
|
|
632
|
+
primaryKey: params.primaryKey,
|
|
633
|
+
relation: params.relation,
|
|
634
|
+
parentTable: params.parentTable
|
|
635
|
+
});
|
|
636
|
+
var keyFromValues = (entry, primaryKey) => {
|
|
637
|
+
if (!entry || typeof entry !== "object") {
|
|
638
|
+
return void 0;
|
|
639
|
+
}
|
|
640
|
+
const row = {};
|
|
641
|
+
for (const column of primaryKey) {
|
|
642
|
+
const value = entry[column];
|
|
643
|
+
if (value === void 0 || value === null) {
|
|
644
|
+
return void 0;
|
|
645
|
+
}
|
|
646
|
+
row[column] = value;
|
|
647
|
+
}
|
|
648
|
+
return row;
|
|
649
|
+
};
|
|
650
|
+
var keysFromWhere = (where, primaryKey) => {
|
|
651
|
+
const none = { rows: [], complete: false };
|
|
652
|
+
if (!where || typeof where !== "object" || Array.isArray(where)) {
|
|
653
|
+
return none;
|
|
654
|
+
}
|
|
655
|
+
const filters = where;
|
|
656
|
+
if (filters.OR || filters.AND || filters.NOT) {
|
|
657
|
+
return none;
|
|
658
|
+
}
|
|
659
|
+
if (primaryKey.length > 1) {
|
|
660
|
+
const row = {};
|
|
661
|
+
for (const column2 of primaryKey) {
|
|
662
|
+
const operators2 = filters[column2];
|
|
663
|
+
if (!operators2 || typeof operators2 !== "object" || operators2.eq === void 0) {
|
|
664
|
+
return none;
|
|
665
|
+
}
|
|
666
|
+
row[column2] = operators2.eq;
|
|
667
|
+
}
|
|
668
|
+
return { rows: [row], complete: Object.keys(filters).length === primaryKey.length };
|
|
669
|
+
}
|
|
670
|
+
const column = primaryKey[0];
|
|
671
|
+
if (!column) {
|
|
672
|
+
return none;
|
|
673
|
+
}
|
|
674
|
+
const operators = filters[column];
|
|
675
|
+
if (!operators || typeof operators !== "object") {
|
|
676
|
+
return none;
|
|
677
|
+
}
|
|
678
|
+
const exact = Object.keys(filters).length === 1 && Object.keys(operators).length === 1;
|
|
679
|
+
if (operators.eq !== void 0) {
|
|
680
|
+
return { rows: [{ [column]: operators.eq }], complete: exact };
|
|
681
|
+
}
|
|
682
|
+
if (Array.isArray(operators.inArray)) {
|
|
683
|
+
return { rows: operators.inArray.map((value) => ({ [column]: value })), complete: exact };
|
|
684
|
+
}
|
|
685
|
+
return none;
|
|
686
|
+
};
|
|
687
|
+
var identifyRows = (field, args) => {
|
|
688
|
+
const meta = drizzleExtension(field);
|
|
689
|
+
if (!isDrizzleFieldExtension(meta)) {
|
|
690
|
+
return void 0;
|
|
691
|
+
}
|
|
692
|
+
const { table, primaryKey, targetArg } = meta;
|
|
693
|
+
const empty = { table, primaryKey, rows: [], complete: false };
|
|
694
|
+
if (!primaryKey.length || !targetArg) {
|
|
695
|
+
return empty;
|
|
696
|
+
}
|
|
697
|
+
const target = args?.[targetArg];
|
|
698
|
+
if (targetArg === "values") {
|
|
699
|
+
const entries = Array.isArray(target) ? target : target === void 0 ? [] : [target];
|
|
700
|
+
const rows = entries.map((entry) => keyFromValues(entry, primaryKey));
|
|
701
|
+
return {
|
|
702
|
+
table,
|
|
703
|
+
primaryKey,
|
|
704
|
+
rows: rows.filter((row) => !!row),
|
|
705
|
+
// A row whose key the database generates is not identifiable before the write.
|
|
706
|
+
complete: entries.length > 0 && rows.every(Boolean)
|
|
707
|
+
};
|
|
708
|
+
}
|
|
709
|
+
if (targetArg === "updates") {
|
|
710
|
+
if (!Array.isArray(target)) {
|
|
711
|
+
return empty;
|
|
712
|
+
}
|
|
713
|
+
const perEntry = target.map(
|
|
714
|
+
(entry) => keysFromWhere(entry?.where, primaryKey)
|
|
715
|
+
);
|
|
716
|
+
return {
|
|
717
|
+
table,
|
|
718
|
+
primaryKey,
|
|
719
|
+
rows: perEntry.flatMap((entry) => entry.rows),
|
|
720
|
+
complete: target.length > 0 && perEntry.every((entry) => entry.complete)
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
return { table, primaryKey, ...keysFromWhere(target, primaryKey) };
|
|
724
|
+
};
|
|
725
|
+
|
|
605
726
|
// src/util/builders/field-updates.ts
|
|
606
727
|
import { getColumns, sql } from "drizzle-orm";
|
|
607
728
|
import {
|
|
@@ -1155,6 +1276,14 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx, limits
|
|
|
1155
1276
|
return loader.load(localValue);
|
|
1156
1277
|
};
|
|
1157
1278
|
};
|
|
1279
|
+
var relationExtensionFor = (relEntry, parentTable, relationName, isOne, aggregate) => relationFieldExtension({
|
|
1280
|
+
targetTable: relEntry.targetTableName,
|
|
1281
|
+
parentTable,
|
|
1282
|
+
relation: relationName,
|
|
1283
|
+
single: isOne,
|
|
1284
|
+
primaryKey: relEntry.targetPkNames ?? [],
|
|
1285
|
+
aggregate
|
|
1286
|
+
});
|
|
1158
1287
|
var columnDocs = (docs, column, tableName, columnName) => {
|
|
1159
1288
|
const description = docs.describeColumn?.(column, { tableName, columnName });
|
|
1160
1289
|
const deprecationReason = docs.deprecateColumn?.(column, { tableName, columnName });
|
|
@@ -1834,7 +1963,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1834
1963
|
const shell = new GraphQLObjectType2({
|
|
1835
1964
|
name: typeName,
|
|
1836
1965
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
1837
|
-
fields: () => ({ ...tableFields, ...container.fields })
|
|
1966
|
+
fields: () => ({ ...tableFields, ...container.fields }),
|
|
1967
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
1838
1968
|
});
|
|
1839
1969
|
cacheCtx.objectTypeCache.set(tableName, shell);
|
|
1840
1970
|
}
|
|
@@ -1876,7 +2006,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1876
2006
|
relType = new GraphQLObjectType2({
|
|
1877
2007
|
name: resolveTypeName(targetTableName, typeNameMapper),
|
|
1878
2008
|
description: cacheCtx.docs.describeTable?.(targetTableName),
|
|
1879
|
-
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields })
|
|
2009
|
+
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields }),
|
|
2010
|
+
extensions: {
|
|
2011
|
+
drizzle: tableTypeExtension(targetTableName, cacheCtx.primaryKeyOf?.(targetTableName) ?? [])
|
|
2012
|
+
}
|
|
1880
2013
|
});
|
|
1881
2014
|
cacheCtx.objectTypeCache.set(targetTableName, relType);
|
|
1882
2015
|
}
|
|
@@ -1893,12 +2026,13 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1893
2026
|
where: { type: relSelectData.filters }
|
|
1894
2027
|
},
|
|
1895
2028
|
resolve,
|
|
1896
|
-
...relationDocs
|
|
2029
|
+
...relationDocs,
|
|
2030
|
+
extensions: { drizzle: relationExtensionFor(relEntry, tableName, relationName, true) }
|
|
1897
2031
|
}
|
|
1898
2032
|
]);
|
|
1899
2033
|
continue;
|
|
1900
2034
|
}
|
|
1901
|
-
const targetDistinctEnum = cacheCtx.
|
|
2035
|
+
const targetDistinctEnum = cacheCtx.featureOf(targetTableName).distinct ? generateDistinctEnum(tables[targetTableName], resolveTypeName(targetTableName, typeNameMapper)) : void 0;
|
|
1902
2036
|
rawRelationFields.push([
|
|
1903
2037
|
relationName,
|
|
1904
2038
|
{
|
|
@@ -1916,11 +2050,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1916
2050
|
},
|
|
1917
2051
|
resolve,
|
|
1918
2052
|
...relationDocs,
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
} : {}
|
|
2053
|
+
extensions: {
|
|
2054
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, false),
|
|
2055
|
+
...cacheCtx.complexity ? { complexity: listFieldComplexity(cacheCtx.complexity, cacheCtx.limits?.(targetTableName)) } : {}
|
|
2056
|
+
}
|
|
1924
2057
|
}
|
|
1925
2058
|
]);
|
|
1926
2059
|
const aggregateFieldName = `${relationName}Aggregate`;
|
|
@@ -1939,7 +2072,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1939
2072
|
where: { type: relSelectData.filters }
|
|
1940
2073
|
},
|
|
1941
2074
|
resolve: relationAggregate.resolve,
|
|
1942
|
-
|
|
2075
|
+
extensions: {
|
|
2076
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, isOne, true),
|
|
2077
|
+
...cacheCtx.complexity ? { complexity: aggregateFieldComplexity(cacheCtx.complexity) } : {}
|
|
2078
|
+
}
|
|
1943
2079
|
}
|
|
1944
2080
|
]);
|
|
1945
2081
|
}
|
|
@@ -2008,7 +2144,7 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
2008
2144
|
const updateFields = Object.fromEntries(
|
|
2009
2145
|
columnEntries.map(([columnName, column]) => {
|
|
2010
2146
|
const converted = drizzleColumnToGraphQLType(column, columnName, tableName, true, false, true);
|
|
2011
|
-
const operations = cacheCtx.
|
|
2147
|
+
const operations = cacheCtx.featureOf(tableName).fieldUpdateOperations ? fieldUpdateInputType(column, columnName, tableName) : void 0;
|
|
2012
2148
|
const field = operations ? { ...converted, type: operations } : converted;
|
|
2013
2149
|
return [columnName, { ...field, ...inputFieldDocs(cacheCtx.docs, column, tableName, columnName, field.type) }];
|
|
2014
2150
|
})
|
|
@@ -2025,7 +2161,8 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
2025
2161
|
const selectSingleOutput = cacheCtx.objectTypeCache.get(tableName) ?? new GraphQLObjectType2({
|
|
2026
2162
|
name: resolveTypeName(tableName, typeNameMapper),
|
|
2027
2163
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
2028
|
-
fields: { ...tableFields, ...relationFields }
|
|
2164
|
+
fields: { ...tableFields, ...relationFields },
|
|
2165
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
2029
2166
|
});
|
|
2030
2167
|
const selectArrOutput = new GraphQLNonNull3(new GraphQLList3(new GraphQLNonNull3(selectSingleOutput)));
|
|
2031
2168
|
const arrTableItemOutput = withReturning ? (
|
|
@@ -3433,6 +3570,38 @@ import {
|
|
|
3433
3570
|
} from "graphql";
|
|
3434
3571
|
import { parseResolveInfo as parseResolveInfo2 } from "graphql-parse-resolve-info";
|
|
3435
3572
|
|
|
3573
|
+
// src/util/features.ts
|
|
3574
|
+
var featureDefaults = {
|
|
3575
|
+
aggregates: true,
|
|
3576
|
+
groupBy: true,
|
|
3577
|
+
relationAggregates: true,
|
|
3578
|
+
distinct: true,
|
|
3579
|
+
insert: true,
|
|
3580
|
+
update: true,
|
|
3581
|
+
updateMany: true,
|
|
3582
|
+
delete: true,
|
|
3583
|
+
upsert: false,
|
|
3584
|
+
fieldUpdateOperations: false,
|
|
3585
|
+
countMutations: false,
|
|
3586
|
+
requireWhere: false
|
|
3587
|
+
};
|
|
3588
|
+
var resolveTableFeatures = (features) => {
|
|
3589
|
+
const cache = /* @__PURE__ */ new Map();
|
|
3590
|
+
const names = Object.keys(featureDefaults);
|
|
3591
|
+
return (tableName) => {
|
|
3592
|
+
let resolved = cache.get(tableName);
|
|
3593
|
+
if (!resolved) {
|
|
3594
|
+
resolved = {};
|
|
3595
|
+
for (const name of names) {
|
|
3596
|
+
const configured = features?.[name];
|
|
3597
|
+
resolved[name] = configured === void 0 ? featureDefaults[name] : typeof configured === "function" ? !!configured(tableName) : !!configured;
|
|
3598
|
+
}
|
|
3599
|
+
cache.set(tableName, resolved);
|
|
3600
|
+
}
|
|
3601
|
+
return resolved;
|
|
3602
|
+
};
|
|
3603
|
+
};
|
|
3604
|
+
|
|
3436
3605
|
// src/util/builders/aggregates.ts
|
|
3437
3606
|
import {
|
|
3438
3607
|
and as and2,
|
|
@@ -4192,6 +4361,8 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4192
4361
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
4193
4362
|
const tableEntries = schemaEntries.filter(([key, value]) => is4(value, MySqlTable) && !excludedTables.has(key));
|
|
4194
4363
|
const tables = Object.fromEntries(tableEntries);
|
|
4364
|
+
const featureOf = resolveTableFeatures(features);
|
|
4365
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
4195
4366
|
if (!tableEntries.length) {
|
|
4196
4367
|
throw new Error(
|
|
4197
4368
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -4234,9 +4405,10 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4234
4405
|
complexity,
|
|
4235
4406
|
limits,
|
|
4236
4407
|
docs: options.docs ?? {},
|
|
4237
|
-
|
|
4408
|
+
primaryKeyOf: (name) => tables[name] ? mysqlPrimaryKeyPropNames(tables[name]) : [],
|
|
4409
|
+
featureOf
|
|
4238
4410
|
};
|
|
4239
|
-
const relationAggregateFactory =
|
|
4411
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
4240
4412
|
const queries = {};
|
|
4241
4413
|
const mutations = {};
|
|
4242
4414
|
const mutationTxCtx = createMutationTxCtx(options.transactions);
|
|
@@ -4254,7 +4426,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4254
4426
|
prefixes.insert,
|
|
4255
4427
|
prefixes.update,
|
|
4256
4428
|
resolverFactory,
|
|
4257
|
-
relationAggregateFactory
|
|
4429
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0
|
|
4258
4430
|
)
|
|
4259
4431
|
])
|
|
4260
4432
|
);
|
|
@@ -4268,10 +4440,12 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4268
4440
|
});
|
|
4269
4441
|
const inputs = {};
|
|
4270
4442
|
const outputs = {};
|
|
4271
|
-
if (
|
|
4443
|
+
if (["insert", "upsert", "update", "delete"].some((feature) => anyTable(feature))) {
|
|
4272
4444
|
outputs.MutationReturn = mutationReturnType;
|
|
4273
4445
|
}
|
|
4274
4446
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
4447
|
+
const tableFeatures = featureOf(tableName);
|
|
4448
|
+
const drizzleMeta = tableFieldExtensions(tableName, mysqlPrimaryKeyPropNames(schema[tableName]));
|
|
4275
4449
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
4276
4450
|
const { selectSingleOutput, selectArrOutput } = tableTypes.outputs;
|
|
4277
4451
|
const {
|
|
@@ -4303,7 +4477,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4303
4477
|
typeName,
|
|
4304
4478
|
typeNameMapper,
|
|
4305
4479
|
filterCtx,
|
|
4306
|
-
|
|
4480
|
+
tableFeatures.distinct,
|
|
4307
4481
|
limits
|
|
4308
4482
|
);
|
|
4309
4483
|
const selectSingleGenerated = generateSelectSingle(
|
|
@@ -4319,7 +4493,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4319
4493
|
filterCtx,
|
|
4320
4494
|
limits
|
|
4321
4495
|
);
|
|
4322
|
-
const insertArrGenerated =
|
|
4496
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray(
|
|
4323
4497
|
db,
|
|
4324
4498
|
tableName,
|
|
4325
4499
|
schema[tableName],
|
|
@@ -4327,7 +4501,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4327
4501
|
createArrayFieldName,
|
|
4328
4502
|
mutationTxCtx
|
|
4329
4503
|
) : void 0;
|
|
4330
|
-
const insertSingleGenerated =
|
|
4504
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle(
|
|
4331
4505
|
db,
|
|
4332
4506
|
tableName,
|
|
4333
4507
|
schema[tableName],
|
|
@@ -4335,7 +4509,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4335
4509
|
createSingleFieldName,
|
|
4336
4510
|
mutationTxCtx
|
|
4337
4511
|
) : void 0;
|
|
4338
|
-
const onConflictInput =
|
|
4512
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
4339
4513
|
table: schema[tableName],
|
|
4340
4514
|
typeName,
|
|
4341
4515
|
uniqueSets: [],
|
|
@@ -4360,7 +4534,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4360
4534
|
true,
|
|
4361
4535
|
mutationTxCtx
|
|
4362
4536
|
) : void 0;
|
|
4363
|
-
const updateGenerated =
|
|
4537
|
+
const updateGenerated = tableFeatures.update ? generateUpdate(
|
|
4364
4538
|
db,
|
|
4365
4539
|
tableName,
|
|
4366
4540
|
schema[tableName],
|
|
@@ -4368,11 +4542,11 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4368
4542
|
tableFilters,
|
|
4369
4543
|
updateFieldName,
|
|
4370
4544
|
false,
|
|
4371
|
-
|
|
4545
|
+
tableFeatures.requireWhere,
|
|
4372
4546
|
filterCtx,
|
|
4373
4547
|
mutationTxCtx
|
|
4374
4548
|
) : void 0;
|
|
4375
|
-
const updateSingleGenerated =
|
|
4549
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate(
|
|
4376
4550
|
db,
|
|
4377
4551
|
tableName,
|
|
4378
4552
|
schema[tableName],
|
|
@@ -4380,11 +4554,11 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4380
4554
|
tableFilters,
|
|
4381
4555
|
updateSingleFieldName,
|
|
4382
4556
|
true,
|
|
4383
|
-
|
|
4557
|
+
tableFeatures.requireWhere,
|
|
4384
4558
|
filterCtx,
|
|
4385
4559
|
mutationTxCtx
|
|
4386
4560
|
) : void 0;
|
|
4387
|
-
const updateManyInput =
|
|
4561
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
4388
4562
|
const updateManyGenerated = updateManyInput ? generateUpdateMany(
|
|
4389
4563
|
db,
|
|
4390
4564
|
tableName,
|
|
@@ -4394,29 +4568,29 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4394
4568
|
filterCtx,
|
|
4395
4569
|
mutationTxCtx
|
|
4396
4570
|
) : void 0;
|
|
4397
|
-
const deleteGenerated =
|
|
4571
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete(
|
|
4398
4572
|
db,
|
|
4399
4573
|
tableName,
|
|
4400
4574
|
schema[tableName],
|
|
4401
4575
|
tableFilters,
|
|
4402
4576
|
deleteFieldName,
|
|
4403
4577
|
false,
|
|
4404
|
-
|
|
4578
|
+
tableFeatures.requireWhere,
|
|
4405
4579
|
filterCtx,
|
|
4406
4580
|
mutationTxCtx
|
|
4407
4581
|
) : void 0;
|
|
4408
|
-
const deleteSingleGenerated =
|
|
4582
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete(
|
|
4409
4583
|
db,
|
|
4410
4584
|
tableName,
|
|
4411
4585
|
schema[tableName],
|
|
4412
4586
|
tableFilters,
|
|
4413
4587
|
deleteSingleFieldName,
|
|
4414
4588
|
true,
|
|
4415
|
-
|
|
4589
|
+
tableFeatures.requireWhere,
|
|
4416
4590
|
filterCtx,
|
|
4417
4591
|
mutationTxCtx
|
|
4418
4592
|
) : void 0;
|
|
4419
|
-
const updateCountGenerated =
|
|
4593
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
4420
4594
|
db,
|
|
4421
4595
|
tableName,
|
|
4422
4596
|
table: schema[tableName],
|
|
@@ -4424,23 +4598,23 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4424
4598
|
setArgs: updateInput,
|
|
4425
4599
|
filterArgs: tableFilters,
|
|
4426
4600
|
fieldName: updateCountFieldName,
|
|
4427
|
-
requireWhere:
|
|
4601
|
+
requireWhere: tableFeatures.requireWhere,
|
|
4428
4602
|
filterCtx,
|
|
4429
4603
|
txCtx: mutationTxCtx
|
|
4430
4604
|
}) : void 0;
|
|
4431
|
-
const deleteCountGenerated =
|
|
4605
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
4432
4606
|
db,
|
|
4433
4607
|
tableName,
|
|
4434
4608
|
table: schema[tableName],
|
|
4435
4609
|
kind: "delete",
|
|
4436
4610
|
filterArgs: tableFilters,
|
|
4437
4611
|
fieldName: deleteCountFieldName,
|
|
4438
|
-
requireWhere:
|
|
4612
|
+
requireWhere: tableFeatures.requireWhere,
|
|
4439
4613
|
filterCtx,
|
|
4440
4614
|
txCtx: mutationTxCtx
|
|
4441
4615
|
}) : void 0;
|
|
4442
|
-
const aggregateType =
|
|
4443
|
-
const aggregateGenerated =
|
|
4616
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
4617
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
4444
4618
|
db,
|
|
4445
4619
|
tableName,
|
|
4446
4620
|
schema[tableName],
|
|
@@ -4449,7 +4623,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4449
4623
|
tableFilters,
|
|
4450
4624
|
filterCtx
|
|
4451
4625
|
) : void 0;
|
|
4452
|
-
const groupByType =
|
|
4626
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
4453
4627
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
4454
4628
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
4455
4629
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -4467,19 +4641,28 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4467
4641
|
type: selectArrOutput,
|
|
4468
4642
|
args: selectArrGenerated.args,
|
|
4469
4643
|
resolve: selectArrGenerated.resolver,
|
|
4470
|
-
|
|
4644
|
+
extensions: {
|
|
4645
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
4646
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
4647
|
+
}
|
|
4471
4648
|
};
|
|
4472
4649
|
queries[selectSingleGenerated.name] = {
|
|
4473
4650
|
type: selectSingleOutput,
|
|
4474
4651
|
args: selectSingleGenerated.args,
|
|
4475
|
-
resolve: selectSingleGenerated.resolver
|
|
4652
|
+
resolve: selectSingleGenerated.resolver,
|
|
4653
|
+
extensions: {
|
|
4654
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
4655
|
+
}
|
|
4476
4656
|
};
|
|
4477
4657
|
if (aggregateGenerated && aggregateType) {
|
|
4478
4658
|
queries[aggregateGenerated.name] = {
|
|
4479
4659
|
type: new GraphQLNonNull5(aggregateType),
|
|
4480
4660
|
args: aggregateGenerated.args,
|
|
4481
4661
|
resolve: aggregateGenerated.resolver,
|
|
4482
|
-
|
|
4662
|
+
extensions: {
|
|
4663
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
4664
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4665
|
+
}
|
|
4483
4666
|
};
|
|
4484
4667
|
}
|
|
4485
4668
|
if (groupByGenerated && groupByType) {
|
|
@@ -4487,25 +4670,30 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4487
4670
|
type: new GraphQLNonNull5(new GraphQLList5(new GraphQLNonNull5(groupByType))),
|
|
4488
4671
|
args: groupByGenerated.args,
|
|
4489
4672
|
resolve: groupByGenerated.resolver,
|
|
4490
|
-
|
|
4673
|
+
extensions: {
|
|
4674
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
4675
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4676
|
+
}
|
|
4491
4677
|
};
|
|
4492
4678
|
}
|
|
4493
|
-
|
|
4494
|
-
insertArrGenerated,
|
|
4495
|
-
insertSingleGenerated,
|
|
4496
|
-
upsertArrGenerated,
|
|
4497
|
-
upsertSingleGenerated,
|
|
4498
|
-
updateGenerated,
|
|
4499
|
-
updateManyGenerated,
|
|
4500
|
-
updateSingleGenerated,
|
|
4501
|
-
deleteGenerated,
|
|
4502
|
-
deleteSingleGenerated
|
|
4503
|
-
]
|
|
4679
|
+
const generatedMutations = [
|
|
4680
|
+
[insertArrGenerated, { operation: "insert", single: false, targetArg: "values" }],
|
|
4681
|
+
[insertSingleGenerated, { operation: "insert", single: true, targetArg: "values" }],
|
|
4682
|
+
[upsertArrGenerated, { operation: "upsert", single: false, targetArg: "values" }],
|
|
4683
|
+
[upsertSingleGenerated, { operation: "upsert", single: true, targetArg: "values" }],
|
|
4684
|
+
[updateGenerated, { operation: "update", single: false, targetArg: "where" }],
|
|
4685
|
+
[updateManyGenerated, { operation: "updateMany", single: false, targetArg: "updates" }],
|
|
4686
|
+
[updateSingleGenerated, { operation: "update", single: true, targetArg: "where" }],
|
|
4687
|
+
[deleteGenerated, { operation: "delete", single: false, targetArg: "where" }],
|
|
4688
|
+
[deleteSingleGenerated, { operation: "delete", single: true, targetArg: "where" }]
|
|
4689
|
+
];
|
|
4690
|
+
for (const [generated, meta] of generatedMutations) {
|
|
4504
4691
|
if (generated) {
|
|
4505
4692
|
mutations[generated.name] = {
|
|
4506
4693
|
type: mutationReturnType,
|
|
4507
4694
|
args: generated.args,
|
|
4508
|
-
resolve: generated.resolver
|
|
4695
|
+
resolve: generated.resolver,
|
|
4696
|
+
extensions: { drizzle: drizzleMeta({ kind: "mutation", ...meta }) }
|
|
4509
4697
|
};
|
|
4510
4698
|
}
|
|
4511
4699
|
}
|
|
@@ -4527,9 +4715,9 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4527
4715
|
}
|
|
4528
4716
|
const activeInputs = [
|
|
4529
4717
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
4530
|
-
...
|
|
4718
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
4531
4719
|
...onConflictInput ? [onConflictInput] : [],
|
|
4532
|
-
...
|
|
4720
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
4533
4721
|
...updateManyInput ? [updateManyInput] : [],
|
|
4534
4722
|
tableFilters,
|
|
4535
4723
|
tableOrder
|
|
@@ -5567,6 +5755,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5567
5755
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
5568
5756
|
const tableEntries = schemaEntries.filter(([key, value]) => is6(value, PgTable) && !excludedTables.has(key));
|
|
5569
5757
|
const tables = Object.fromEntries(tableEntries);
|
|
5758
|
+
const featureOf = resolveTableFeatures(features);
|
|
5759
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
5570
5760
|
if (!tableEntries.length) {
|
|
5571
5761
|
throw new Error(
|
|
5572
5762
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -5604,7 +5794,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5604
5794
|
complexity,
|
|
5605
5795
|
limits,
|
|
5606
5796
|
docs: options.docs ?? {},
|
|
5607
|
-
|
|
5797
|
+
primaryKeyOf: (name) => tables[name] ? pgPrimaryKeyPropNames(tables[name]) : [],
|
|
5798
|
+
featureOf
|
|
5608
5799
|
};
|
|
5609
5800
|
const nestedPlans = features.nestedWrites ? buildNestedWritePlans(
|
|
5610
5801
|
tables,
|
|
@@ -5615,7 +5806,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5615
5806
|
) : void 0;
|
|
5616
5807
|
const nestedTypes = nestedPlans ? createNestedWriteTypes({ plans: nestedPlans, cacheCtx, typeNameMapper, insertPrefix: prefixes.insert }) : void 0;
|
|
5617
5808
|
const nestedRuntime = nestedPlans ? createNestedWriteRuntime({ plans: nestedPlans, filterCtx }) : void 0;
|
|
5618
|
-
const relationAggregateFactory =
|
|
5809
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
5619
5810
|
const queries = {};
|
|
5620
5811
|
const mutations = {};
|
|
5621
5812
|
const mutationTxCtx = createMutationTxCtx(options.transactions);
|
|
@@ -5633,7 +5824,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5633
5824
|
prefixes.insert,
|
|
5634
5825
|
prefixes.update,
|
|
5635
5826
|
resolverFactory,
|
|
5636
|
-
relationAggregateFactory,
|
|
5827
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0,
|
|
5637
5828
|
nestedTypes
|
|
5638
5829
|
)
|
|
5639
5830
|
])
|
|
@@ -5641,6 +5832,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5641
5832
|
const inputs = {};
|
|
5642
5833
|
const outputs = {};
|
|
5643
5834
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
5835
|
+
const tableFeatures = featureOf(tableName);
|
|
5836
|
+
const drizzleMeta = tableFieldExtensions(tableName, pgPrimaryKeyPropNames(schema[tableName]));
|
|
5644
5837
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
5645
5838
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
5646
5839
|
const {
|
|
@@ -5672,7 +5865,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5672
5865
|
typeName,
|
|
5673
5866
|
typeNameMapper,
|
|
5674
5867
|
filterCtx,
|
|
5675
|
-
|
|
5868
|
+
tableFeatures.distinct,
|
|
5676
5869
|
limits
|
|
5677
5870
|
);
|
|
5678
5871
|
const selectSingleGenerated = generateSelectSingle2(
|
|
@@ -5688,7 +5881,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5688
5881
|
filterCtx,
|
|
5689
5882
|
limits
|
|
5690
5883
|
);
|
|
5691
|
-
const insertArrGenerated =
|
|
5884
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray2(
|
|
5692
5885
|
db,
|
|
5693
5886
|
tableName,
|
|
5694
5887
|
schema[tableName],
|
|
@@ -5703,7 +5896,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5703
5896
|
nestedRuntime,
|
|
5704
5897
|
limits
|
|
5705
5898
|
) : void 0;
|
|
5706
|
-
const insertSingleGenerated =
|
|
5899
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle2(
|
|
5707
5900
|
db,
|
|
5708
5901
|
tableName,
|
|
5709
5902
|
schema[tableName],
|
|
@@ -5718,8 +5911,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5718
5911
|
nestedRuntime,
|
|
5719
5912
|
limits
|
|
5720
5913
|
) : void 0;
|
|
5721
|
-
const uniqueSets =
|
|
5722
|
-
const onConflictInput =
|
|
5914
|
+
const uniqueSets = tableFeatures.upsert ? getUniqueColumnSets(schema[tableName], getTableConfig2) : [];
|
|
5915
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
5723
5916
|
table: schema[tableName],
|
|
5724
5917
|
typeName,
|
|
5725
5918
|
uniqueSets,
|
|
@@ -5762,7 +5955,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5762
5955
|
nestedRuntime,
|
|
5763
5956
|
limits
|
|
5764
5957
|
) : void 0;
|
|
5765
|
-
const updateGenerated =
|
|
5958
|
+
const updateGenerated = tableFeatures.update ? generateUpdate2(
|
|
5766
5959
|
db,
|
|
5767
5960
|
tableName,
|
|
5768
5961
|
schema[tableName],
|
|
@@ -5773,14 +5966,14 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5773
5966
|
updateFieldName,
|
|
5774
5967
|
typeName,
|
|
5775
5968
|
false,
|
|
5776
|
-
|
|
5969
|
+
tableFeatures.requireWhere,
|
|
5777
5970
|
typeNameMapper,
|
|
5778
5971
|
filterCtx,
|
|
5779
5972
|
mutationTxCtx,
|
|
5780
5973
|
nestedRuntime,
|
|
5781
5974
|
limits
|
|
5782
5975
|
) : void 0;
|
|
5783
|
-
const updateSingleGenerated =
|
|
5976
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate2(
|
|
5784
5977
|
db,
|
|
5785
5978
|
tableName,
|
|
5786
5979
|
schema[tableName],
|
|
@@ -5791,14 +5984,14 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5791
5984
|
updateSingleFieldName,
|
|
5792
5985
|
typeName,
|
|
5793
5986
|
true,
|
|
5794
|
-
|
|
5987
|
+
tableFeatures.requireWhere,
|
|
5795
5988
|
typeNameMapper,
|
|
5796
5989
|
filterCtx,
|
|
5797
5990
|
mutationTxCtx,
|
|
5798
5991
|
nestedRuntime,
|
|
5799
5992
|
limits
|
|
5800
5993
|
) : void 0;
|
|
5801
|
-
const updateManyInput =
|
|
5994
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
5802
5995
|
const updateManyGenerated = updateManyInput ? generateUpdateMany2(
|
|
5803
5996
|
db,
|
|
5804
5997
|
tableName,
|
|
@@ -5814,7 +6007,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5814
6007
|
nestedRuntime,
|
|
5815
6008
|
limits
|
|
5816
6009
|
) : void 0;
|
|
5817
|
-
const deleteGenerated =
|
|
6010
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete2(
|
|
5818
6011
|
db,
|
|
5819
6012
|
tableName,
|
|
5820
6013
|
schema[tableName],
|
|
@@ -5822,12 +6015,12 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5822
6015
|
deleteFieldName,
|
|
5823
6016
|
typeName,
|
|
5824
6017
|
false,
|
|
5825
|
-
|
|
6018
|
+
tableFeatures.requireWhere,
|
|
5826
6019
|
filterCtx,
|
|
5827
6020
|
{ tableName, relationMap: namedRelations, tables },
|
|
5828
6021
|
mutationTxCtx
|
|
5829
6022
|
) : void 0;
|
|
5830
|
-
const deleteSingleGenerated =
|
|
6023
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete2(
|
|
5831
6024
|
db,
|
|
5832
6025
|
tableName,
|
|
5833
6026
|
schema[tableName],
|
|
@@ -5835,12 +6028,12 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5835
6028
|
deleteSingleFieldName,
|
|
5836
6029
|
typeName,
|
|
5837
6030
|
true,
|
|
5838
|
-
|
|
6031
|
+
tableFeatures.requireWhere,
|
|
5839
6032
|
filterCtx,
|
|
5840
6033
|
{ tableName, relationMap: namedRelations, tables },
|
|
5841
6034
|
mutationTxCtx
|
|
5842
6035
|
) : void 0;
|
|
5843
|
-
const updateCountGenerated =
|
|
6036
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
5844
6037
|
db,
|
|
5845
6038
|
tableName,
|
|
5846
6039
|
table: schema[tableName],
|
|
@@ -5848,24 +6041,24 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5848
6041
|
setArgs: updateInput,
|
|
5849
6042
|
filterArgs: tableFilters,
|
|
5850
6043
|
fieldName: updateCountFieldName,
|
|
5851
|
-
requireWhere:
|
|
6044
|
+
requireWhere: tableFeatures.requireWhere,
|
|
5852
6045
|
filterCtx,
|
|
5853
6046
|
txCtx: mutationTxCtx,
|
|
5854
6047
|
nested: nestedRuntime
|
|
5855
6048
|
}) : void 0;
|
|
5856
|
-
const deleteCountGenerated =
|
|
6049
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
5857
6050
|
db,
|
|
5858
6051
|
tableName,
|
|
5859
6052
|
table: schema[tableName],
|
|
5860
6053
|
kind: "delete",
|
|
5861
6054
|
filterArgs: tableFilters,
|
|
5862
6055
|
fieldName: deleteCountFieldName,
|
|
5863
|
-
requireWhere:
|
|
6056
|
+
requireWhere: tableFeatures.requireWhere,
|
|
5864
6057
|
filterCtx,
|
|
5865
6058
|
txCtx: mutationTxCtx
|
|
5866
6059
|
}) : void 0;
|
|
5867
|
-
const aggregateType =
|
|
5868
|
-
const aggregateGenerated =
|
|
6060
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
6061
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
5869
6062
|
db,
|
|
5870
6063
|
tableName,
|
|
5871
6064
|
schema[tableName],
|
|
@@ -5874,7 +6067,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5874
6067
|
tableFilters,
|
|
5875
6068
|
filterCtx
|
|
5876
6069
|
) : void 0;
|
|
5877
|
-
const groupByType =
|
|
6070
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
5878
6071
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
5879
6072
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
5880
6073
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -5892,19 +6085,28 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5892
6085
|
type: selectArrOutput,
|
|
5893
6086
|
args: selectArrGenerated.args,
|
|
5894
6087
|
resolve: selectArrGenerated.resolver,
|
|
5895
|
-
|
|
6088
|
+
extensions: {
|
|
6089
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
6090
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
6091
|
+
}
|
|
5896
6092
|
};
|
|
5897
6093
|
queries[selectSingleGenerated.name] = {
|
|
5898
6094
|
type: selectSingleOutput,
|
|
5899
6095
|
args: selectSingleGenerated.args,
|
|
5900
|
-
resolve: selectSingleGenerated.resolver
|
|
6096
|
+
resolve: selectSingleGenerated.resolver,
|
|
6097
|
+
extensions: {
|
|
6098
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
6099
|
+
}
|
|
5901
6100
|
};
|
|
5902
6101
|
if (aggregateGenerated && aggregateType) {
|
|
5903
6102
|
queries[aggregateGenerated.name] = {
|
|
5904
6103
|
type: new GraphQLNonNull7(aggregateType),
|
|
5905
6104
|
args: aggregateGenerated.args,
|
|
5906
6105
|
resolve: aggregateGenerated.resolver,
|
|
5907
|
-
|
|
6106
|
+
extensions: {
|
|
6107
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
6108
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6109
|
+
}
|
|
5908
6110
|
};
|
|
5909
6111
|
}
|
|
5910
6112
|
if (groupByGenerated && groupByType) {
|
|
@@ -5912,14 +6114,20 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5912
6114
|
type: new GraphQLNonNull7(new GraphQLList7(new GraphQLNonNull7(groupByType))),
|
|
5913
6115
|
args: groupByGenerated.args,
|
|
5914
6116
|
resolve: groupByGenerated.resolver,
|
|
5915
|
-
|
|
6117
|
+
extensions: {
|
|
6118
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
6119
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6120
|
+
}
|
|
5916
6121
|
};
|
|
5917
6122
|
}
|
|
5918
6123
|
if (insertArrGenerated) {
|
|
5919
6124
|
mutations[insertArrGenerated.name] = {
|
|
5920
6125
|
type: arrTableItemOutput,
|
|
5921
6126
|
args: insertArrGenerated.args,
|
|
5922
|
-
resolve: insertArrGenerated.resolver
|
|
6127
|
+
resolve: insertArrGenerated.resolver,
|
|
6128
|
+
extensions: {
|
|
6129
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
6130
|
+
}
|
|
5923
6131
|
};
|
|
5924
6132
|
}
|
|
5925
6133
|
if (insertSingleGenerated) {
|
|
@@ -5928,28 +6136,40 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5928
6136
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
5929
6137
|
type: conflictDoNothing ? singleTableItemOutput : new GraphQLNonNull7(singleTableItemOutput),
|
|
5930
6138
|
args: insertSingleGenerated.args,
|
|
5931
|
-
resolve: insertSingleGenerated.resolver
|
|
6139
|
+
resolve: insertSingleGenerated.resolver,
|
|
6140
|
+
extensions: {
|
|
6141
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
6142
|
+
}
|
|
5932
6143
|
};
|
|
5933
6144
|
}
|
|
5934
6145
|
if (upsertArrGenerated) {
|
|
5935
6146
|
mutations[upsertArrGenerated.name] = {
|
|
5936
6147
|
type: arrTableItemOutput,
|
|
5937
6148
|
args: upsertArrGenerated.args,
|
|
5938
|
-
resolve: upsertArrGenerated.resolver
|
|
6149
|
+
resolve: upsertArrGenerated.resolver,
|
|
6150
|
+
extensions: {
|
|
6151
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
6152
|
+
}
|
|
5939
6153
|
};
|
|
5940
6154
|
}
|
|
5941
6155
|
if (upsertSingleGenerated) {
|
|
5942
6156
|
mutations[upsertSingleGenerated.name] = {
|
|
5943
6157
|
type: singleTableItemOutput,
|
|
5944
6158
|
args: upsertSingleGenerated.args,
|
|
5945
|
-
resolve: upsertSingleGenerated.resolver
|
|
6159
|
+
resolve: upsertSingleGenerated.resolver,
|
|
6160
|
+
extensions: {
|
|
6161
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
6162
|
+
}
|
|
5946
6163
|
};
|
|
5947
6164
|
}
|
|
5948
6165
|
if (updateGenerated) {
|
|
5949
6166
|
mutations[updateGenerated.name] = {
|
|
5950
6167
|
type: arrTableItemOutput,
|
|
5951
6168
|
args: updateGenerated.args,
|
|
5952
|
-
resolve: updateGenerated.resolver
|
|
6169
|
+
resolve: updateGenerated.resolver,
|
|
6170
|
+
extensions: {
|
|
6171
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
6172
|
+
}
|
|
5953
6173
|
};
|
|
5954
6174
|
}
|
|
5955
6175
|
if (updateManyGenerated) {
|
|
@@ -5957,6 +6177,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5957
6177
|
type: new GraphQLNonNull7(new GraphQLList7(singleTableItemOutput)),
|
|
5958
6178
|
args: updateManyGenerated.args,
|
|
5959
6179
|
resolve: updateManyGenerated.resolver,
|
|
6180
|
+
extensions: {
|
|
6181
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
6182
|
+
},
|
|
5960
6183
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
5961
6184
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
5962
6185
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -5967,21 +6190,30 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5967
6190
|
mutations[updateSingleGenerated.name] = {
|
|
5968
6191
|
type: singleTableItemOutput,
|
|
5969
6192
|
args: updateSingleGenerated.args,
|
|
5970
|
-
resolve: updateSingleGenerated.resolver
|
|
6193
|
+
resolve: updateSingleGenerated.resolver,
|
|
6194
|
+
extensions: {
|
|
6195
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
6196
|
+
}
|
|
5971
6197
|
};
|
|
5972
6198
|
}
|
|
5973
6199
|
if (deleteGenerated) {
|
|
5974
6200
|
mutations[deleteGenerated.name] = {
|
|
5975
6201
|
type: arrTableItemOutput,
|
|
5976
6202
|
args: deleteGenerated.args,
|
|
5977
|
-
resolve: deleteGenerated.resolver
|
|
6203
|
+
resolve: deleteGenerated.resolver,
|
|
6204
|
+
extensions: {
|
|
6205
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
6206
|
+
}
|
|
5978
6207
|
};
|
|
5979
6208
|
}
|
|
5980
6209
|
if (deleteSingleGenerated) {
|
|
5981
6210
|
mutations[deleteSingleGenerated.name] = {
|
|
5982
6211
|
type: singleTableItemOutput,
|
|
5983
6212
|
args: deleteSingleGenerated.args,
|
|
5984
|
-
resolve: deleteSingleGenerated.resolver
|
|
6213
|
+
resolve: deleteSingleGenerated.resolver,
|
|
6214
|
+
extensions: {
|
|
6215
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
6216
|
+
}
|
|
5985
6217
|
};
|
|
5986
6218
|
}
|
|
5987
6219
|
if (updateCountGenerated) {
|
|
@@ -6002,9 +6234,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
6002
6234
|
}
|
|
6003
6235
|
const activeInputs = [
|
|
6004
6236
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
6005
|
-
...
|
|
6237
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
6006
6238
|
...onConflictInput ? [onConflictInput] : [],
|
|
6007
|
-
...
|
|
6239
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
6008
6240
|
...updateManyInput ? [updateManyInput] : [],
|
|
6009
6241
|
tableFilters,
|
|
6010
6242
|
tableOrder
|
|
@@ -6589,6 +6821,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6589
6821
|
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
6590
6822
|
const tableEntries = schemaEntries.filter(([key, value]) => is7(value, SQLiteTable) && !excludedTables.has(key));
|
|
6591
6823
|
const tables = Object.fromEntries(tableEntries);
|
|
6824
|
+
const featureOf = resolveTableFeatures(features);
|
|
6825
|
+
const anyTable = (feature) => tableEntries.some(([name]) => featureOf(name)[feature]);
|
|
6592
6826
|
if (!tableEntries.length) {
|
|
6593
6827
|
throw new Error(
|
|
6594
6828
|
"Drizzle-GraphQL Error: No tables detected in Drizzle-ORM's database instance. Did you forget to pass schema to drizzle constructor?"
|
|
@@ -6626,7 +6860,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6626
6860
|
complexity,
|
|
6627
6861
|
limits,
|
|
6628
6862
|
docs: options.docs ?? {},
|
|
6629
|
-
|
|
6863
|
+
primaryKeyOf: (name) => tables[name] ? sqlitePrimaryKeyPropNames(tables[name]) : [],
|
|
6864
|
+
featureOf
|
|
6630
6865
|
};
|
|
6631
6866
|
if (features.nestedWrites && db.resultKind === "sync") {
|
|
6632
6867
|
throw new Error(
|
|
@@ -6642,7 +6877,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6642
6877
|
) : void 0;
|
|
6643
6878
|
const nestedTypes = nestedPlans ? createNestedWriteTypes({ plans: nestedPlans, cacheCtx, typeNameMapper, insertPrefix: prefixes.insert }) : void 0;
|
|
6644
6879
|
const nestedRuntime = nestedPlans ? createNestedWriteRuntime({ plans: nestedPlans, filterCtx }) : void 0;
|
|
6645
|
-
const relationAggregateFactory =
|
|
6880
|
+
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
6646
6881
|
const queries = {};
|
|
6647
6882
|
const mutations = {};
|
|
6648
6883
|
if (options.transactions && db.resultKind === "sync") {
|
|
@@ -6665,7 +6900,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6665
6900
|
prefixes.insert,
|
|
6666
6901
|
prefixes.update,
|
|
6667
6902
|
resolverFactory,
|
|
6668
|
-
relationAggregateFactory,
|
|
6903
|
+
featureOf(tableName).relationAggregates ? relationAggregateFactory : void 0,
|
|
6669
6904
|
nestedTypes
|
|
6670
6905
|
)
|
|
6671
6906
|
])
|
|
@@ -6673,6 +6908,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6673
6908
|
const inputs = {};
|
|
6674
6909
|
const outputs = {};
|
|
6675
6910
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
6911
|
+
const tableFeatures = featureOf(tableName);
|
|
6912
|
+
const drizzleMeta = tableFieldExtensions(tableName, sqlitePrimaryKeyPropNames(schema[tableName]));
|
|
6676
6913
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
6677
6914
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
6678
6915
|
const {
|
|
@@ -6704,7 +6941,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6704
6941
|
typeName,
|
|
6705
6942
|
typeNameMapper,
|
|
6706
6943
|
filterCtx,
|
|
6707
|
-
|
|
6944
|
+
tableFeatures.distinct,
|
|
6708
6945
|
limits
|
|
6709
6946
|
);
|
|
6710
6947
|
const selectSingleGenerated = generateSelectSingle3(
|
|
@@ -6720,7 +6957,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6720
6957
|
filterCtx,
|
|
6721
6958
|
limits
|
|
6722
6959
|
);
|
|
6723
|
-
const insertArrGenerated =
|
|
6960
|
+
const insertArrGenerated = tableFeatures.insert ? generateInsertArray3(
|
|
6724
6961
|
db,
|
|
6725
6962
|
tableName,
|
|
6726
6963
|
schema[tableName],
|
|
@@ -6735,7 +6972,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6735
6972
|
nestedRuntime,
|
|
6736
6973
|
limits
|
|
6737
6974
|
) : void 0;
|
|
6738
|
-
const insertSingleGenerated =
|
|
6975
|
+
const insertSingleGenerated = tableFeatures.insert ? generateInsertSingle3(
|
|
6739
6976
|
db,
|
|
6740
6977
|
tableName,
|
|
6741
6978
|
schema[tableName],
|
|
@@ -6750,8 +6987,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6750
6987
|
nestedRuntime,
|
|
6751
6988
|
limits
|
|
6752
6989
|
) : void 0;
|
|
6753
|
-
const uniqueSets =
|
|
6754
|
-
const onConflictInput =
|
|
6990
|
+
const uniqueSets = tableFeatures.upsert ? getUniqueColumnSets(schema[tableName], getTableConfig3) : [];
|
|
6991
|
+
const onConflictInput = tableFeatures.upsert ? generateOnConflictInput({
|
|
6755
6992
|
table: schema[tableName],
|
|
6756
6993
|
typeName,
|
|
6757
6994
|
uniqueSets,
|
|
@@ -6794,7 +7031,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6794
7031
|
nestedRuntime,
|
|
6795
7032
|
limits
|
|
6796
7033
|
) : void 0;
|
|
6797
|
-
const updateGenerated =
|
|
7034
|
+
const updateGenerated = tableFeatures.update ? generateUpdate3(
|
|
6798
7035
|
db,
|
|
6799
7036
|
tableName,
|
|
6800
7037
|
schema[tableName],
|
|
@@ -6805,14 +7042,14 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6805
7042
|
updateFieldName,
|
|
6806
7043
|
typeName,
|
|
6807
7044
|
false,
|
|
6808
|
-
|
|
7045
|
+
tableFeatures.requireWhere,
|
|
6809
7046
|
typeNameMapper,
|
|
6810
7047
|
filterCtx,
|
|
6811
7048
|
mutationTxCtx,
|
|
6812
7049
|
nestedRuntime,
|
|
6813
7050
|
limits
|
|
6814
7051
|
) : void 0;
|
|
6815
|
-
const updateSingleGenerated =
|
|
7052
|
+
const updateSingleGenerated = tableFeatures.update ? generateUpdate3(
|
|
6816
7053
|
db,
|
|
6817
7054
|
tableName,
|
|
6818
7055
|
schema[tableName],
|
|
@@ -6823,14 +7060,14 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6823
7060
|
updateSingleFieldName,
|
|
6824
7061
|
typeName,
|
|
6825
7062
|
true,
|
|
6826
|
-
|
|
7063
|
+
tableFeatures.requireWhere,
|
|
6827
7064
|
typeNameMapper,
|
|
6828
7065
|
filterCtx,
|
|
6829
7066
|
mutationTxCtx,
|
|
6830
7067
|
nestedRuntime,
|
|
6831
7068
|
limits
|
|
6832
7069
|
) : void 0;
|
|
6833
|
-
const updateManyInput =
|
|
7070
|
+
const updateManyInput = tableFeatures.update && tableFeatures.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
6834
7071
|
const updateManyGenerated = updateManyInput ? generateUpdateMany3(
|
|
6835
7072
|
db,
|
|
6836
7073
|
tableName,
|
|
@@ -6846,7 +7083,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6846
7083
|
nestedRuntime,
|
|
6847
7084
|
limits
|
|
6848
7085
|
) : void 0;
|
|
6849
|
-
const deleteGenerated =
|
|
7086
|
+
const deleteGenerated = tableFeatures.delete ? generateDelete3(
|
|
6850
7087
|
db,
|
|
6851
7088
|
tableName,
|
|
6852
7089
|
schema[tableName],
|
|
@@ -6854,12 +7091,12 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6854
7091
|
deleteFieldName,
|
|
6855
7092
|
typeName,
|
|
6856
7093
|
false,
|
|
6857
|
-
|
|
7094
|
+
tableFeatures.requireWhere,
|
|
6858
7095
|
filterCtx,
|
|
6859
7096
|
{ tableName, relationMap: namedRelations, tables },
|
|
6860
7097
|
mutationTxCtx
|
|
6861
7098
|
) : void 0;
|
|
6862
|
-
const deleteSingleGenerated =
|
|
7099
|
+
const deleteSingleGenerated = tableFeatures.delete ? generateDelete3(
|
|
6863
7100
|
db,
|
|
6864
7101
|
tableName,
|
|
6865
7102
|
schema[tableName],
|
|
@@ -6867,12 +7104,12 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6867
7104
|
deleteSingleFieldName,
|
|
6868
7105
|
typeName,
|
|
6869
7106
|
true,
|
|
6870
|
-
|
|
7107
|
+
tableFeatures.requireWhere,
|
|
6871
7108
|
filterCtx,
|
|
6872
7109
|
{ tableName, relationMap: namedRelations, tables },
|
|
6873
7110
|
mutationTxCtx
|
|
6874
7111
|
) : void 0;
|
|
6875
|
-
const updateCountGenerated =
|
|
7112
|
+
const updateCountGenerated = tableFeatures.update && tableFeatures.countMutations ? generateWriteCount({
|
|
6876
7113
|
db,
|
|
6877
7114
|
tableName,
|
|
6878
7115
|
table: schema[tableName],
|
|
@@ -6880,24 +7117,24 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6880
7117
|
setArgs: updateInput,
|
|
6881
7118
|
filterArgs: tableFilters,
|
|
6882
7119
|
fieldName: updateCountFieldName,
|
|
6883
|
-
requireWhere:
|
|
7120
|
+
requireWhere: tableFeatures.requireWhere,
|
|
6884
7121
|
filterCtx,
|
|
6885
7122
|
txCtx: mutationTxCtx,
|
|
6886
7123
|
nested: nestedRuntime
|
|
6887
7124
|
}) : void 0;
|
|
6888
|
-
const deleteCountGenerated =
|
|
7125
|
+
const deleteCountGenerated = tableFeatures.delete && tableFeatures.countMutations ? generateWriteCount({
|
|
6889
7126
|
db,
|
|
6890
7127
|
tableName,
|
|
6891
7128
|
table: schema[tableName],
|
|
6892
7129
|
kind: "delete",
|
|
6893
7130
|
filterArgs: tableFilters,
|
|
6894
7131
|
fieldName: deleteCountFieldName,
|
|
6895
|
-
requireWhere:
|
|
7132
|
+
requireWhere: tableFeatures.requireWhere,
|
|
6896
7133
|
filterCtx,
|
|
6897
7134
|
txCtx: mutationTxCtx
|
|
6898
7135
|
}) : void 0;
|
|
6899
|
-
const aggregateType =
|
|
6900
|
-
const aggregateGenerated =
|
|
7136
|
+
const aggregateType = tableFeatures.aggregates ? generateAggregateTypes(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
7137
|
+
const aggregateGenerated = tableFeatures.aggregates ? generateAggregate(
|
|
6901
7138
|
db,
|
|
6902
7139
|
tableName,
|
|
6903
7140
|
schema[tableName],
|
|
@@ -6906,7 +7143,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6906
7143
|
tableFilters,
|
|
6907
7144
|
filterCtx
|
|
6908
7145
|
) : void 0;
|
|
6909
|
-
const groupByType =
|
|
7146
|
+
const groupByType = tableFeatures.aggregates && tableFeatures.groupBy ? generateGroupByType(schema[tableName], tableName, typeName, cacheCtx) : void 0;
|
|
6910
7147
|
const groupByEnum = groupByType ? generateGroupByEnum(schema[tableName], tableName, typeName) : void 0;
|
|
6911
7148
|
const havingInput = groupByEnum ? generateHavingInput(schema[tableName], tableName, typeName) : void 0;
|
|
6912
7149
|
const groupByGenerated = groupByType && groupByEnum && havingInput ? generateGroupBy(
|
|
@@ -6924,19 +7161,28 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6924
7161
|
type: selectArrOutput,
|
|
6925
7162
|
args: selectArrGenerated.args,
|
|
6926
7163
|
resolve: selectArrGenerated.resolver,
|
|
6927
|
-
|
|
7164
|
+
extensions: {
|
|
7165
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
7166
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
7167
|
+
}
|
|
6928
7168
|
};
|
|
6929
7169
|
queries[selectSingleGenerated.name] = {
|
|
6930
7170
|
type: selectSingleOutput,
|
|
6931
7171
|
args: selectSingleGenerated.args,
|
|
6932
|
-
resolve: selectSingleGenerated.resolver
|
|
7172
|
+
resolve: selectSingleGenerated.resolver,
|
|
7173
|
+
extensions: {
|
|
7174
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
7175
|
+
}
|
|
6933
7176
|
};
|
|
6934
7177
|
if (aggregateGenerated && aggregateType) {
|
|
6935
7178
|
queries[aggregateGenerated.name] = {
|
|
6936
7179
|
type: new GraphQLNonNull8(aggregateType),
|
|
6937
7180
|
args: aggregateGenerated.args,
|
|
6938
7181
|
resolve: aggregateGenerated.resolver,
|
|
6939
|
-
|
|
7182
|
+
extensions: {
|
|
7183
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
7184
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7185
|
+
}
|
|
6940
7186
|
};
|
|
6941
7187
|
}
|
|
6942
7188
|
if (groupByGenerated && groupByType) {
|
|
@@ -6944,14 +7190,20 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6944
7190
|
type: new GraphQLNonNull8(new GraphQLList8(new GraphQLNonNull8(groupByType))),
|
|
6945
7191
|
args: groupByGenerated.args,
|
|
6946
7192
|
resolve: groupByGenerated.resolver,
|
|
6947
|
-
|
|
7193
|
+
extensions: {
|
|
7194
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
7195
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7196
|
+
}
|
|
6948
7197
|
};
|
|
6949
7198
|
}
|
|
6950
7199
|
if (insertArrGenerated) {
|
|
6951
7200
|
mutations[insertArrGenerated.name] = {
|
|
6952
7201
|
type: arrTableItemOutput,
|
|
6953
7202
|
args: insertArrGenerated.args,
|
|
6954
|
-
resolve: insertArrGenerated.resolver
|
|
7203
|
+
resolve: insertArrGenerated.resolver,
|
|
7204
|
+
extensions: {
|
|
7205
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
7206
|
+
}
|
|
6955
7207
|
};
|
|
6956
7208
|
}
|
|
6957
7209
|
if (insertSingleGenerated) {
|
|
@@ -6960,28 +7212,40 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6960
7212
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
6961
7213
|
type: conflictDoNothing ? singleTableItemOutput : new GraphQLNonNull8(singleTableItemOutput),
|
|
6962
7214
|
args: insertSingleGenerated.args,
|
|
6963
|
-
resolve: insertSingleGenerated.resolver
|
|
7215
|
+
resolve: insertSingleGenerated.resolver,
|
|
7216
|
+
extensions: {
|
|
7217
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
7218
|
+
}
|
|
6964
7219
|
};
|
|
6965
7220
|
}
|
|
6966
7221
|
if (upsertArrGenerated) {
|
|
6967
7222
|
mutations[upsertArrGenerated.name] = {
|
|
6968
7223
|
type: arrTableItemOutput,
|
|
6969
7224
|
args: upsertArrGenerated.args,
|
|
6970
|
-
resolve: upsertArrGenerated.resolver
|
|
7225
|
+
resolve: upsertArrGenerated.resolver,
|
|
7226
|
+
extensions: {
|
|
7227
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
7228
|
+
}
|
|
6971
7229
|
};
|
|
6972
7230
|
}
|
|
6973
7231
|
if (upsertSingleGenerated) {
|
|
6974
7232
|
mutations[upsertSingleGenerated.name] = {
|
|
6975
7233
|
type: singleTableItemOutput,
|
|
6976
7234
|
args: upsertSingleGenerated.args,
|
|
6977
|
-
resolve: upsertSingleGenerated.resolver
|
|
7235
|
+
resolve: upsertSingleGenerated.resolver,
|
|
7236
|
+
extensions: {
|
|
7237
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
7238
|
+
}
|
|
6978
7239
|
};
|
|
6979
7240
|
}
|
|
6980
7241
|
if (updateGenerated) {
|
|
6981
7242
|
mutations[updateGenerated.name] = {
|
|
6982
7243
|
type: arrTableItemOutput,
|
|
6983
7244
|
args: updateGenerated.args,
|
|
6984
|
-
resolve: updateGenerated.resolver
|
|
7245
|
+
resolve: updateGenerated.resolver,
|
|
7246
|
+
extensions: {
|
|
7247
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
7248
|
+
}
|
|
6985
7249
|
};
|
|
6986
7250
|
}
|
|
6987
7251
|
if (updateManyGenerated) {
|
|
@@ -6989,6 +7253,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6989
7253
|
type: new GraphQLNonNull8(new GraphQLList8(singleTableItemOutput)),
|
|
6990
7254
|
args: updateManyGenerated.args,
|
|
6991
7255
|
resolve: updateManyGenerated.resolver,
|
|
7256
|
+
extensions: {
|
|
7257
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
7258
|
+
},
|
|
6992
7259
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
6993
7260
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
6994
7261
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -6999,21 +7266,30 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6999
7266
|
mutations[updateSingleGenerated.name] = {
|
|
7000
7267
|
type: singleTableItemOutput,
|
|
7001
7268
|
args: updateSingleGenerated.args,
|
|
7002
|
-
resolve: updateSingleGenerated.resolver
|
|
7269
|
+
resolve: updateSingleGenerated.resolver,
|
|
7270
|
+
extensions: {
|
|
7271
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
7272
|
+
}
|
|
7003
7273
|
};
|
|
7004
7274
|
}
|
|
7005
7275
|
if (deleteGenerated) {
|
|
7006
7276
|
mutations[deleteGenerated.name] = {
|
|
7007
7277
|
type: arrTableItemOutput,
|
|
7008
7278
|
args: deleteGenerated.args,
|
|
7009
|
-
resolve: deleteGenerated.resolver
|
|
7279
|
+
resolve: deleteGenerated.resolver,
|
|
7280
|
+
extensions: {
|
|
7281
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
7282
|
+
}
|
|
7010
7283
|
};
|
|
7011
7284
|
}
|
|
7012
7285
|
if (deleteSingleGenerated) {
|
|
7013
7286
|
mutations[deleteSingleGenerated.name] = {
|
|
7014
7287
|
type: singleTableItemOutput,
|
|
7015
7288
|
args: deleteSingleGenerated.args,
|
|
7016
|
-
resolve: deleteSingleGenerated.resolver
|
|
7289
|
+
resolve: deleteSingleGenerated.resolver,
|
|
7290
|
+
extensions: {
|
|
7291
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
7292
|
+
}
|
|
7017
7293
|
};
|
|
7018
7294
|
}
|
|
7019
7295
|
if (updateCountGenerated) {
|
|
@@ -7034,9 +7310,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7034
7310
|
}
|
|
7035
7311
|
const activeInputs = [
|
|
7036
7312
|
// The insert input types the upsert mutations too, so either feature keeps it.
|
|
7037
|
-
...
|
|
7313
|
+
...tableFeatures.insert || onConflictInput ? [insertInput] : [],
|
|
7038
7314
|
...onConflictInput ? [onConflictInput] : [],
|
|
7039
|
-
...
|
|
7315
|
+
...tableFeatures.update ? [updateInput] : [],
|
|
7040
7316
|
...updateManyInput ? [updateManyInput] : [],
|
|
7041
7317
|
tableFilters,
|
|
7042
7318
|
tableOrder
|
|
@@ -7076,6 +7352,141 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7076
7352
|
return { queries, mutations, inputs, types: outputs, fieldResolvers };
|
|
7077
7353
|
};
|
|
7078
7354
|
|
|
7355
|
+
// src/util/selection.ts
|
|
7356
|
+
import { is as is8, Table } from "drizzle-orm";
|
|
7357
|
+
import { getTableConfig as getMySqlTableConfig, MySqlDatabase } from "drizzle-orm/mysql-core";
|
|
7358
|
+
import { getTableConfig as getPgTableConfig, PgAsyncDatabase } from "drizzle-orm/pg-core";
|
|
7359
|
+
import { BaseSQLiteDatabase, getTableConfig as getSQLiteTableConfig } from "drizzle-orm/sqlite-core";
|
|
7360
|
+
import { parseResolveInfo as parseResolveInfo5 } from "graphql-parse-resolve-info";
|
|
7361
|
+
var contextCache = /* @__PURE__ */ new WeakMap();
|
|
7362
|
+
var tableConfigFor = (db) => {
|
|
7363
|
+
if (is8(db, MySqlDatabase)) {
|
|
7364
|
+
return getMySqlTableConfig;
|
|
7365
|
+
}
|
|
7366
|
+
if (is8(db, PgAsyncDatabase)) {
|
|
7367
|
+
return getPgTableConfig;
|
|
7368
|
+
}
|
|
7369
|
+
if (is8(db, BaseSQLiteDatabase)) {
|
|
7370
|
+
return getSQLiteTableConfig;
|
|
7371
|
+
}
|
|
7372
|
+
throw new Error("Drizzle-GraphQL Error: unsupported database instance \u2014 expected a PostgreSQL, MySQL or SQLite one.");
|
|
7373
|
+
};
|
|
7374
|
+
var contextFor = (db) => {
|
|
7375
|
+
const cached = contextCache.get(db);
|
|
7376
|
+
if (cached) {
|
|
7377
|
+
return cached;
|
|
7378
|
+
}
|
|
7379
|
+
const relations = db._.relations ?? {};
|
|
7380
|
+
const schema = db._.fullSchema ?? Object.fromEntries(
|
|
7381
|
+
Object.entries(relations).filter(([, config]) => config?.table != null).map(([key, config]) => [key, config.table])
|
|
7382
|
+
);
|
|
7383
|
+
const tableEntries = Object.entries(schema).filter(([, value]) => is8(value, Table));
|
|
7384
|
+
if (!tableEntries.length) {
|
|
7385
|
+
throw new Error(
|
|
7386
|
+
"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."
|
|
7387
|
+
);
|
|
7388
|
+
}
|
|
7389
|
+
const tables = Object.fromEntries(tableEntries);
|
|
7390
|
+
const getTableConfig4 = tableConfigFor(db);
|
|
7391
|
+
const primaryKeyCache = /* @__PURE__ */ new Map();
|
|
7392
|
+
const primaryKeyOf = (tableName) => {
|
|
7393
|
+
let pk = primaryKeyCache.get(tableName);
|
|
7394
|
+
if (!pk) {
|
|
7395
|
+
const table = tables[tableName];
|
|
7396
|
+
pk = table ? getPrimaryKeyPropNamesFromConfig(table, getTableConfig4) : [];
|
|
7397
|
+
primaryKeyCache.set(tableName, pk);
|
|
7398
|
+
}
|
|
7399
|
+
return pk;
|
|
7400
|
+
};
|
|
7401
|
+
const relationMap = buildNamedRelations(relations, tableEntries);
|
|
7402
|
+
attachTargetPrimaryKeys(relationMap, tables, (table) => [...primaryKeyOf(tableNameOf(tables, table))]);
|
|
7403
|
+
const context = {
|
|
7404
|
+
tables,
|
|
7405
|
+
relationMap,
|
|
7406
|
+
filterCtx: { tables, relationMap },
|
|
7407
|
+
primaryKeyOf
|
|
7408
|
+
};
|
|
7409
|
+
contextCache.set(db, context);
|
|
7410
|
+
return context;
|
|
7411
|
+
};
|
|
7412
|
+
var tableNameOf = (tables, table) => Object.keys(tables).find((name) => tables[name] === table) ?? "";
|
|
7413
|
+
var parseInfo = (info) => {
|
|
7414
|
+
if ("fieldsByTypeName" in info) {
|
|
7415
|
+
return info;
|
|
7416
|
+
}
|
|
7417
|
+
return parseResolveInfo5(info, { deep: true });
|
|
7418
|
+
};
|
|
7419
|
+
var selectionToWith = (info, options) => {
|
|
7420
|
+
const { db, table, typeNameMapper } = options;
|
|
7421
|
+
const { tables, relationMap, filterCtx } = contextFor(db);
|
|
7422
|
+
if (!tables[table]) {
|
|
7423
|
+
throw new Error(`Drizzle-GraphQL Error: '${table}' is not a table in the Drizzle schema.`);
|
|
7424
|
+
}
|
|
7425
|
+
if (!relationMap[table]) {
|
|
7426
|
+
return void 0;
|
|
7427
|
+
}
|
|
7428
|
+
const parsed = parseInfo(info);
|
|
7429
|
+
const params = extractRelationsParams(
|
|
7430
|
+
relationMap,
|
|
7431
|
+
tables,
|
|
7432
|
+
table,
|
|
7433
|
+
parsed,
|
|
7434
|
+
resolveTypeName(table, typeNameMapper),
|
|
7435
|
+
typeNameMapper,
|
|
7436
|
+
filterCtx
|
|
7437
|
+
);
|
|
7438
|
+
return params && Object.keys(params).length ? params : void 0;
|
|
7439
|
+
};
|
|
7440
|
+
var resolveSelection = async (info, options) => {
|
|
7441
|
+
const {
|
|
7442
|
+
db,
|
|
7443
|
+
table: tableName,
|
|
7444
|
+
typeNameMapper,
|
|
7445
|
+
executor,
|
|
7446
|
+
single = false,
|
|
7447
|
+
where,
|
|
7448
|
+
orderBy,
|
|
7449
|
+
limit,
|
|
7450
|
+
offset,
|
|
7451
|
+
after
|
|
7452
|
+
} = options;
|
|
7453
|
+
const { tables, relationMap, filterCtx, primaryKeyOf } = contextFor(db);
|
|
7454
|
+
const table = tables[tableName];
|
|
7455
|
+
if (!table) {
|
|
7456
|
+
throw new Error(`Drizzle-GraphQL Error: '${tableName}' is not a table in the Drizzle schema.`);
|
|
7457
|
+
}
|
|
7458
|
+
const parsedInfo = parseInfo(info);
|
|
7459
|
+
if (!parsedInfo) {
|
|
7460
|
+
throw new Error("Drizzle-GraphQL Error: resolveSelection could not read a selection set from the resolve info.");
|
|
7461
|
+
}
|
|
7462
|
+
const source = executor ?? db;
|
|
7463
|
+
const queryBase = source.query?.[tableName];
|
|
7464
|
+
if (!queryBase) {
|
|
7465
|
+
throw new Error(
|
|
7466
|
+
`Drizzle-GraphQL Error: the executor passed to resolveSelection has no relational query builder for '${tableName}'.`
|
|
7467
|
+
);
|
|
7468
|
+
}
|
|
7469
|
+
return runRelationalSelect({
|
|
7470
|
+
queryBase,
|
|
7471
|
+
tables,
|
|
7472
|
+
tableName,
|
|
7473
|
+
table,
|
|
7474
|
+
relationMap,
|
|
7475
|
+
typeName: resolveTypeName(tableName, typeNameMapper),
|
|
7476
|
+
typeNameMapper,
|
|
7477
|
+
parsedInfo,
|
|
7478
|
+
single,
|
|
7479
|
+
where,
|
|
7480
|
+
orderBy,
|
|
7481
|
+
limit,
|
|
7482
|
+
offset,
|
|
7483
|
+
after,
|
|
7484
|
+
filterCtx,
|
|
7485
|
+
pkNames: primaryKeyOf(tableName),
|
|
7486
|
+
db: source
|
|
7487
|
+
});
|
|
7488
|
+
};
|
|
7489
|
+
|
|
7079
7490
|
// src/index.ts
|
|
7080
7491
|
var buildSchema = (db, config) => {
|
|
7081
7492
|
const relations = db._.relations;
|
|
@@ -7097,22 +7508,11 @@ var buildSchema = (db, config) => {
|
|
|
7097
7508
|
list: config?.suffixes?.list ?? "",
|
|
7098
7509
|
single: config?.suffixes?.single ?? "Single"
|
|
7099
7510
|
};
|
|
7100
|
-
const typeNameMapper = config?.typeNameMapper;
|
|
7101
|
-
const
|
|
7102
|
-
|
|
7103
|
-
|
|
7104
|
-
|
|
7105
|
-
distinct: config?.features?.distinct ?? true,
|
|
7106
|
-
insert: config?.features?.insert ?? true,
|
|
7107
|
-
update: config?.features?.update ?? true,
|
|
7108
|
-
updateMany: config?.features?.updateMany ?? true,
|
|
7109
|
-
delete: config?.features?.delete ?? true,
|
|
7110
|
-
upsert: config?.features?.upsert ?? false,
|
|
7111
|
-
nestedWrites: config?.features?.nestedWrites ?? false,
|
|
7112
|
-
fieldUpdateOperations: config?.features?.fieldUpdateOperations ?? false,
|
|
7113
|
-
countMutations: config?.features?.countMutations ?? false,
|
|
7114
|
-
requireWhere: config?.features?.requireWhere ?? false
|
|
7115
|
-
};
|
|
7511
|
+
const typeNameMapper = config?.typeNameMapper === "singularize" ? singularizeMapper : config?.typeNameMapper;
|
|
7512
|
+
const tableKeys = Object.entries(schema).filter(([, value]) => is9(value, Table2)).map(([key]) => key);
|
|
7513
|
+
const excludedTableNames = new Set(config?.exclude?.tables ?? []);
|
|
7514
|
+
const featureTables = tableKeys.filter((key) => !excludedTableNames.has(key));
|
|
7515
|
+
const forTable = resolveTableFeatures(config?.features);
|
|
7116
7516
|
const complexityConfig = config?.complexity ?? true;
|
|
7117
7517
|
const complexity = complexityConfig === false ? void 0 : {
|
|
7118
7518
|
defaultListSize: (complexityConfig === true ? void 0 : complexityConfig.defaultListSize) ?? 10,
|
|
@@ -7149,10 +7549,8 @@ var buildSchema = (db, config) => {
|
|
|
7149
7549
|
} : void 0;
|
|
7150
7550
|
const exclude = config?.exclude;
|
|
7151
7551
|
if (exclude) {
|
|
7152
|
-
const tableNames = new Set(
|
|
7153
|
-
|
|
7154
|
-
);
|
|
7155
|
-
const excludedTables = new Set(exclude.tables ?? []);
|
|
7552
|
+
const tableNames = new Set(tableKeys);
|
|
7553
|
+
const excludedTables = excludedTableNames;
|
|
7156
7554
|
for (const tableName of excludedTables) {
|
|
7157
7555
|
if (!tableNames.has(tableName)) {
|
|
7158
7556
|
throw new Error(
|
|
@@ -7190,6 +7588,49 @@ var buildSchema = (db, config) => {
|
|
|
7190
7588
|
}
|
|
7191
7589
|
}
|
|
7192
7590
|
}
|
|
7591
|
+
const featureConflicts = /* @__PURE__ */ new Map();
|
|
7592
|
+
const noteConflict = (message, tableName) => {
|
|
7593
|
+
const tables = featureConflicts.get(message);
|
|
7594
|
+
if (tables) {
|
|
7595
|
+
tables.push(tableName);
|
|
7596
|
+
} else {
|
|
7597
|
+
featureConflicts.set(message, [tableName]);
|
|
7598
|
+
}
|
|
7599
|
+
};
|
|
7600
|
+
for (const tableName of featureTables) {
|
|
7601
|
+
const tableFeatures = forTable(tableName);
|
|
7602
|
+
if (tableFeatures.upsert) {
|
|
7603
|
+
const missing = [!tableFeatures.insert ? "insert" : void 0, !tableFeatures.update ? "update" : void 0].filter(Boolean).join(" and ");
|
|
7604
|
+
if (missing) {
|
|
7605
|
+
noteConflict(
|
|
7606
|
+
`upsert is on while ${missing} is off, so the upsert mutations are a second write path past the operation you turned off`,
|
|
7607
|
+
tableName
|
|
7608
|
+
);
|
|
7609
|
+
}
|
|
7610
|
+
}
|
|
7611
|
+
if (config?.features?.nestedWrites && (!tableFeatures.insert || !tableFeatures.update)) {
|
|
7612
|
+
noteConflict(
|
|
7613
|
+
"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",
|
|
7614
|
+
tableName
|
|
7615
|
+
);
|
|
7616
|
+
}
|
|
7617
|
+
if (config?.features?.updateMany !== void 0 && tableFeatures.updateMany && !tableFeatures.update) {
|
|
7618
|
+
noteConflict("updateMany is on while update is off, so no batch update is generated", tableName);
|
|
7619
|
+
}
|
|
7620
|
+
if (config?.features?.groupBy !== void 0 && tableFeatures.groupBy && !tableFeatures.aggregates) {
|
|
7621
|
+
noteConflict("groupBy is on while aggregates is off, so no grouped query is generated", tableName);
|
|
7622
|
+
}
|
|
7623
|
+
if (tableFeatures.countMutations && !tableFeatures.update && !tableFeatures.delete) {
|
|
7624
|
+
noteConflict(
|
|
7625
|
+
"countMutations is on while update and delete are both off, so no count mutation is generated",
|
|
7626
|
+
tableName
|
|
7627
|
+
);
|
|
7628
|
+
}
|
|
7629
|
+
}
|
|
7630
|
+
for (const [message, tables] of featureConflicts) {
|
|
7631
|
+
const listed = tables.length > 5 ? `${tables.slice(0, 5).join(", ")} and ${tables.length - 5} more` : tables.join(", ");
|
|
7632
|
+
console.warn(`Drizzle-GraphQL Warning: config.features \u2014 ${message} (${listed}).`);
|
|
7633
|
+
}
|
|
7193
7634
|
const eagerOpt = config?.eagerLoadRelations;
|
|
7194
7635
|
const shouldEagerLoad = eagerOpt === void 0 || eagerOpt === true ? () => true : eagerOpt === false ? () => false : eagerOpt;
|
|
7195
7636
|
if (!typeNameMapper && suffixes.list === suffixes.single) {
|
|
@@ -7216,7 +7657,7 @@ var buildSchema = (db, config) => {
|
|
|
7216
7657
|
conflictDoNothing: config?.conflictDoNothing ?? false,
|
|
7217
7658
|
typeNameMapper,
|
|
7218
7659
|
shouldEagerLoad,
|
|
7219
|
-
features,
|
|
7660
|
+
features: config?.features ?? {},
|
|
7220
7661
|
complexity,
|
|
7221
7662
|
scalars: config?.scalars,
|
|
7222
7663
|
mapColumnType: config?.mapColumnType,
|
|
@@ -7232,11 +7673,11 @@ var buildSchema = (db, config) => {
|
|
|
7232
7673
|
}
|
|
7233
7674
|
};
|
|
7234
7675
|
let generatorOutput;
|
|
7235
|
-
if (
|
|
7676
|
+
if (is9(db, MySqlDatabase2)) {
|
|
7236
7677
|
generatorOutput = generateSchemaData(db, schema, relations, generatorOptions);
|
|
7237
|
-
} else if (
|
|
7678
|
+
} else if (is9(db, PgAsyncDatabase2)) {
|
|
7238
7679
|
generatorOutput = generateSchemaData2(db, schema, relations, generatorOptions);
|
|
7239
|
-
} else if (
|
|
7680
|
+
} else if (is9(db, BaseSQLiteDatabase2)) {
|
|
7240
7681
|
generatorOutput = generateSchemaData3(db, schema, relations, generatorOptions);
|
|
7241
7682
|
} else {
|
|
7242
7683
|
throw new Error("Drizzle-GraphQL Error: Unknown database instance type");
|
|
@@ -7275,8 +7716,14 @@ export {
|
|
|
7275
7716
|
createRelationResolverFactory,
|
|
7276
7717
|
defaultErrorMapper,
|
|
7277
7718
|
drizzleExecutorKey,
|
|
7719
|
+
drizzleExtension,
|
|
7278
7720
|
extractFilters,
|
|
7279
7721
|
extractOrderBy,
|
|
7280
|
-
extractRelationJoinColumns
|
|
7722
|
+
extractRelationJoinColumns,
|
|
7723
|
+
identifyRows,
|
|
7724
|
+
isDrizzleFieldExtension,
|
|
7725
|
+
resolveSelection,
|
|
7726
|
+
selectionToWith,
|
|
7727
|
+
singularizeMapper
|
|
7281
7728
|
};
|
|
7282
7729
|
//# sourceMappingURL=index.js.map
|