@vantreeseba/drizzle-graphql 7.4.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 +99 -0
- package/dist/README.md +99 -0
- package/dist/index.cjs +435 -59
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +180 -1
- package/dist/index.d.ts +180 -1
- package/dist/index.js +429 -58
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -40,16 +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
46
|
extractRelationJoinColumns: () => extractRelationJoinColumns,
|
|
47
|
+
identifyRows: () => identifyRows,
|
|
48
|
+
isDrizzleFieldExtension: () => isDrizzleFieldExtension,
|
|
49
|
+
resolveSelection: () => resolveSelection,
|
|
50
|
+
selectionToWith: () => selectionToWith,
|
|
46
51
|
singularizeMapper: () => singularizeMapper
|
|
47
52
|
});
|
|
48
53
|
module.exports = __toCommonJS(index_exports);
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
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");
|
|
53
58
|
var import_graphql11 = require("graphql");
|
|
54
59
|
|
|
55
60
|
// src/util/builders/common.ts
|
|
@@ -598,6 +603,123 @@ var remapFromGraphQLArrayInput = (queryInput, table) => {
|
|
|
598
603
|
return queryInput;
|
|
599
604
|
};
|
|
600
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
|
+
|
|
601
723
|
// src/util/builders/field-updates.ts
|
|
602
724
|
var import_drizzle_orm3 = require("drizzle-orm");
|
|
603
725
|
var import_graphql4 = require("graphql");
|
|
@@ -1144,6 +1266,14 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx, limits
|
|
|
1144
1266
|
return loader.load(localValue);
|
|
1145
1267
|
};
|
|
1146
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
|
+
});
|
|
1147
1277
|
var columnDocs = (docs, column, tableName, columnName) => {
|
|
1148
1278
|
const description = docs.describeColumn?.(column, { tableName, columnName });
|
|
1149
1279
|
const deprecationReason = docs.deprecateColumn?.(column, { tableName, columnName });
|
|
@@ -1823,7 +1953,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1823
1953
|
const shell = new import_graphql5.GraphQLObjectType({
|
|
1824
1954
|
name: typeName,
|
|
1825
1955
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
1826
|
-
fields: () => ({ ...tableFields, ...container.fields })
|
|
1956
|
+
fields: () => ({ ...tableFields, ...container.fields }),
|
|
1957
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
1827
1958
|
});
|
|
1828
1959
|
cacheCtx.objectTypeCache.set(tableName, shell);
|
|
1829
1960
|
}
|
|
@@ -1865,7 +1996,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1865
1996
|
relType = new import_graphql5.GraphQLObjectType({
|
|
1866
1997
|
name: resolveTypeName(targetTableName, typeNameMapper),
|
|
1867
1998
|
description: cacheCtx.docs.describeTable?.(targetTableName),
|
|
1868
|
-
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields })
|
|
1999
|
+
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields }),
|
|
2000
|
+
extensions: {
|
|
2001
|
+
drizzle: tableTypeExtension(targetTableName, cacheCtx.primaryKeyOf?.(targetTableName) ?? [])
|
|
2002
|
+
}
|
|
1869
2003
|
});
|
|
1870
2004
|
cacheCtx.objectTypeCache.set(targetTableName, relType);
|
|
1871
2005
|
}
|
|
@@ -1882,7 +2016,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1882
2016
|
where: { type: relSelectData.filters }
|
|
1883
2017
|
},
|
|
1884
2018
|
resolve,
|
|
1885
|
-
...relationDocs
|
|
2019
|
+
...relationDocs,
|
|
2020
|
+
extensions: { drizzle: relationExtensionFor(relEntry, tableName, relationName, true) }
|
|
1886
2021
|
}
|
|
1887
2022
|
]);
|
|
1888
2023
|
continue;
|
|
@@ -1905,11 +2040,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1905
2040
|
},
|
|
1906
2041
|
resolve,
|
|
1907
2042
|
...relationDocs,
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
} : {}
|
|
2043
|
+
extensions: {
|
|
2044
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, false),
|
|
2045
|
+
...cacheCtx.complexity ? { complexity: listFieldComplexity(cacheCtx.complexity, cacheCtx.limits?.(targetTableName)) } : {}
|
|
2046
|
+
}
|
|
1913
2047
|
}
|
|
1914
2048
|
]);
|
|
1915
2049
|
const aggregateFieldName = `${relationName}Aggregate`;
|
|
@@ -1928,7 +2062,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1928
2062
|
where: { type: relSelectData.filters }
|
|
1929
2063
|
},
|
|
1930
2064
|
resolve: relationAggregate.resolve,
|
|
1931
|
-
|
|
2065
|
+
extensions: {
|
|
2066
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, isOne, true),
|
|
2067
|
+
...cacheCtx.complexity ? { complexity: aggregateFieldComplexity(cacheCtx.complexity) } : {}
|
|
2068
|
+
}
|
|
1932
2069
|
}
|
|
1933
2070
|
]);
|
|
1934
2071
|
}
|
|
@@ -2014,7 +2151,8 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
2014
2151
|
const selectSingleOutput = cacheCtx.objectTypeCache.get(tableName) ?? new import_graphql5.GraphQLObjectType({
|
|
2015
2152
|
name: resolveTypeName(tableName, typeNameMapper),
|
|
2016
2153
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
2017
|
-
fields: { ...tableFields, ...relationFields }
|
|
2154
|
+
fields: { ...tableFields, ...relationFields },
|
|
2155
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
2018
2156
|
});
|
|
2019
2157
|
const selectArrOutput = new import_graphql5.GraphQLNonNull(new import_graphql5.GraphQLList(new import_graphql5.GraphQLNonNull(selectSingleOutput)));
|
|
2020
2158
|
const arrTableItemOutput = withReturning ? (
|
|
@@ -4225,6 +4363,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4225
4363
|
complexity,
|
|
4226
4364
|
limits,
|
|
4227
4365
|
docs: options.docs ?? {},
|
|
4366
|
+
primaryKeyOf: (name) => tables[name] ? mysqlPrimaryKeyPropNames(tables[name]) : [],
|
|
4228
4367
|
featureOf
|
|
4229
4368
|
};
|
|
4230
4369
|
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
@@ -4264,6 +4403,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4264
4403
|
}
|
|
4265
4404
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
4266
4405
|
const tableFeatures = featureOf(tableName);
|
|
4406
|
+
const drizzleMeta = tableFieldExtensions(tableName, mysqlPrimaryKeyPropNames(schema[tableName]));
|
|
4267
4407
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
4268
4408
|
const { selectSingleOutput, selectArrOutput } = tableTypes.outputs;
|
|
4269
4409
|
const {
|
|
@@ -4459,19 +4599,28 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4459
4599
|
type: selectArrOutput,
|
|
4460
4600
|
args: selectArrGenerated.args,
|
|
4461
4601
|
resolve: selectArrGenerated.resolver,
|
|
4462
|
-
|
|
4602
|
+
extensions: {
|
|
4603
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
4604
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
4605
|
+
}
|
|
4463
4606
|
};
|
|
4464
4607
|
queries[selectSingleGenerated.name] = {
|
|
4465
4608
|
type: selectSingleOutput,
|
|
4466
4609
|
args: selectSingleGenerated.args,
|
|
4467
|
-
resolve: selectSingleGenerated.resolver
|
|
4610
|
+
resolve: selectSingleGenerated.resolver,
|
|
4611
|
+
extensions: {
|
|
4612
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
4613
|
+
}
|
|
4468
4614
|
};
|
|
4469
4615
|
if (aggregateGenerated && aggregateType) {
|
|
4470
4616
|
queries[aggregateGenerated.name] = {
|
|
4471
4617
|
type: new import_graphql7.GraphQLNonNull(aggregateType),
|
|
4472
4618
|
args: aggregateGenerated.args,
|
|
4473
4619
|
resolve: aggregateGenerated.resolver,
|
|
4474
|
-
|
|
4620
|
+
extensions: {
|
|
4621
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
4622
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4623
|
+
}
|
|
4475
4624
|
};
|
|
4476
4625
|
}
|
|
4477
4626
|
if (groupByGenerated && groupByType) {
|
|
@@ -4479,25 +4628,30 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4479
4628
|
type: new import_graphql7.GraphQLNonNull(new import_graphql7.GraphQLList(new import_graphql7.GraphQLNonNull(groupByType))),
|
|
4480
4629
|
args: groupByGenerated.args,
|
|
4481
4630
|
resolve: groupByGenerated.resolver,
|
|
4482
|
-
|
|
4631
|
+
extensions: {
|
|
4632
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
4633
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4634
|
+
}
|
|
4483
4635
|
};
|
|
4484
4636
|
}
|
|
4485
|
-
|
|
4486
|
-
insertArrGenerated,
|
|
4487
|
-
insertSingleGenerated,
|
|
4488
|
-
upsertArrGenerated,
|
|
4489
|
-
upsertSingleGenerated,
|
|
4490
|
-
updateGenerated,
|
|
4491
|
-
updateManyGenerated,
|
|
4492
|
-
updateSingleGenerated,
|
|
4493
|
-
deleteGenerated,
|
|
4494
|
-
deleteSingleGenerated
|
|
4495
|
-
]
|
|
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) {
|
|
4496
4649
|
if (generated) {
|
|
4497
4650
|
mutations[generated.name] = {
|
|
4498
4651
|
type: mutationReturnType,
|
|
4499
4652
|
args: generated.args,
|
|
4500
|
-
resolve: generated.resolver
|
|
4653
|
+
resolve: generated.resolver,
|
|
4654
|
+
extensions: { drizzle: drizzleMeta({ kind: "mutation", ...meta }) }
|
|
4501
4655
|
};
|
|
4502
4656
|
}
|
|
4503
4657
|
}
|
|
@@ -5587,6 +5741,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5587
5741
|
complexity,
|
|
5588
5742
|
limits,
|
|
5589
5743
|
docs: options.docs ?? {},
|
|
5744
|
+
primaryKeyOf: (name) => tables[name] ? pgPrimaryKeyPropNames(tables[name]) : [],
|
|
5590
5745
|
featureOf
|
|
5591
5746
|
};
|
|
5592
5747
|
const nestedPlans = features.nestedWrites ? buildNestedWritePlans(
|
|
@@ -5625,6 +5780,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5625
5780
|
const outputs = {};
|
|
5626
5781
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
5627
5782
|
const tableFeatures = featureOf(tableName);
|
|
5783
|
+
const drizzleMeta = tableFieldExtensions(tableName, pgPrimaryKeyPropNames(schema[tableName]));
|
|
5628
5784
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
5629
5785
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
5630
5786
|
const {
|
|
@@ -5876,19 +6032,28 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5876
6032
|
type: selectArrOutput,
|
|
5877
6033
|
args: selectArrGenerated.args,
|
|
5878
6034
|
resolve: selectArrGenerated.resolver,
|
|
5879
|
-
|
|
6035
|
+
extensions: {
|
|
6036
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
6037
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
6038
|
+
}
|
|
5880
6039
|
};
|
|
5881
6040
|
queries[selectSingleGenerated.name] = {
|
|
5882
6041
|
type: selectSingleOutput,
|
|
5883
6042
|
args: selectSingleGenerated.args,
|
|
5884
|
-
resolve: selectSingleGenerated.resolver
|
|
6043
|
+
resolve: selectSingleGenerated.resolver,
|
|
6044
|
+
extensions: {
|
|
6045
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
6046
|
+
}
|
|
5885
6047
|
};
|
|
5886
6048
|
if (aggregateGenerated && aggregateType) {
|
|
5887
6049
|
queries[aggregateGenerated.name] = {
|
|
5888
6050
|
type: new import_graphql9.GraphQLNonNull(aggregateType),
|
|
5889
6051
|
args: aggregateGenerated.args,
|
|
5890
6052
|
resolve: aggregateGenerated.resolver,
|
|
5891
|
-
|
|
6053
|
+
extensions: {
|
|
6054
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
6055
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6056
|
+
}
|
|
5892
6057
|
};
|
|
5893
6058
|
}
|
|
5894
6059
|
if (groupByGenerated && groupByType) {
|
|
@@ -5896,14 +6061,20 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5896
6061
|
type: new import_graphql9.GraphQLNonNull(new import_graphql9.GraphQLList(new import_graphql9.GraphQLNonNull(groupByType))),
|
|
5897
6062
|
args: groupByGenerated.args,
|
|
5898
6063
|
resolve: groupByGenerated.resolver,
|
|
5899
|
-
|
|
6064
|
+
extensions: {
|
|
6065
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
6066
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6067
|
+
}
|
|
5900
6068
|
};
|
|
5901
6069
|
}
|
|
5902
6070
|
if (insertArrGenerated) {
|
|
5903
6071
|
mutations[insertArrGenerated.name] = {
|
|
5904
6072
|
type: arrTableItemOutput,
|
|
5905
6073
|
args: insertArrGenerated.args,
|
|
5906
|
-
resolve: insertArrGenerated.resolver
|
|
6074
|
+
resolve: insertArrGenerated.resolver,
|
|
6075
|
+
extensions: {
|
|
6076
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
6077
|
+
}
|
|
5907
6078
|
};
|
|
5908
6079
|
}
|
|
5909
6080
|
if (insertSingleGenerated) {
|
|
@@ -5912,28 +6083,40 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5912
6083
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
5913
6084
|
type: conflictDoNothing ? singleTableItemOutput : new import_graphql9.GraphQLNonNull(singleTableItemOutput),
|
|
5914
6085
|
args: insertSingleGenerated.args,
|
|
5915
|
-
resolve: insertSingleGenerated.resolver
|
|
6086
|
+
resolve: insertSingleGenerated.resolver,
|
|
6087
|
+
extensions: {
|
|
6088
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
6089
|
+
}
|
|
5916
6090
|
};
|
|
5917
6091
|
}
|
|
5918
6092
|
if (upsertArrGenerated) {
|
|
5919
6093
|
mutations[upsertArrGenerated.name] = {
|
|
5920
6094
|
type: arrTableItemOutput,
|
|
5921
6095
|
args: upsertArrGenerated.args,
|
|
5922
|
-
resolve: upsertArrGenerated.resolver
|
|
6096
|
+
resolve: upsertArrGenerated.resolver,
|
|
6097
|
+
extensions: {
|
|
6098
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
6099
|
+
}
|
|
5923
6100
|
};
|
|
5924
6101
|
}
|
|
5925
6102
|
if (upsertSingleGenerated) {
|
|
5926
6103
|
mutations[upsertSingleGenerated.name] = {
|
|
5927
6104
|
type: singleTableItemOutput,
|
|
5928
6105
|
args: upsertSingleGenerated.args,
|
|
5929
|
-
resolve: upsertSingleGenerated.resolver
|
|
6106
|
+
resolve: upsertSingleGenerated.resolver,
|
|
6107
|
+
extensions: {
|
|
6108
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
6109
|
+
}
|
|
5930
6110
|
};
|
|
5931
6111
|
}
|
|
5932
6112
|
if (updateGenerated) {
|
|
5933
6113
|
mutations[updateGenerated.name] = {
|
|
5934
6114
|
type: arrTableItemOutput,
|
|
5935
6115
|
args: updateGenerated.args,
|
|
5936
|
-
resolve: updateGenerated.resolver
|
|
6116
|
+
resolve: updateGenerated.resolver,
|
|
6117
|
+
extensions: {
|
|
6118
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
6119
|
+
}
|
|
5937
6120
|
};
|
|
5938
6121
|
}
|
|
5939
6122
|
if (updateManyGenerated) {
|
|
@@ -5941,6 +6124,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5941
6124
|
type: new import_graphql9.GraphQLNonNull(new import_graphql9.GraphQLList(singleTableItemOutput)),
|
|
5942
6125
|
args: updateManyGenerated.args,
|
|
5943
6126
|
resolve: updateManyGenerated.resolver,
|
|
6127
|
+
extensions: {
|
|
6128
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
6129
|
+
},
|
|
5944
6130
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
5945
6131
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
5946
6132
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -5951,21 +6137,30 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5951
6137
|
mutations[updateSingleGenerated.name] = {
|
|
5952
6138
|
type: singleTableItemOutput,
|
|
5953
6139
|
args: updateSingleGenerated.args,
|
|
5954
|
-
resolve: updateSingleGenerated.resolver
|
|
6140
|
+
resolve: updateSingleGenerated.resolver,
|
|
6141
|
+
extensions: {
|
|
6142
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
6143
|
+
}
|
|
5955
6144
|
};
|
|
5956
6145
|
}
|
|
5957
6146
|
if (deleteGenerated) {
|
|
5958
6147
|
mutations[deleteGenerated.name] = {
|
|
5959
6148
|
type: arrTableItemOutput,
|
|
5960
6149
|
args: deleteGenerated.args,
|
|
5961
|
-
resolve: deleteGenerated.resolver
|
|
6150
|
+
resolve: deleteGenerated.resolver,
|
|
6151
|
+
extensions: {
|
|
6152
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
6153
|
+
}
|
|
5962
6154
|
};
|
|
5963
6155
|
}
|
|
5964
6156
|
if (deleteSingleGenerated) {
|
|
5965
6157
|
mutations[deleteSingleGenerated.name] = {
|
|
5966
6158
|
type: singleTableItemOutput,
|
|
5967
6159
|
args: deleteSingleGenerated.args,
|
|
5968
|
-
resolve: deleteSingleGenerated.resolver
|
|
6160
|
+
resolve: deleteSingleGenerated.resolver,
|
|
6161
|
+
extensions: {
|
|
6162
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
6163
|
+
}
|
|
5969
6164
|
};
|
|
5970
6165
|
}
|
|
5971
6166
|
if (updateCountGenerated) {
|
|
@@ -6607,6 +6802,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6607
6802
|
complexity,
|
|
6608
6803
|
limits,
|
|
6609
6804
|
docs: options.docs ?? {},
|
|
6805
|
+
primaryKeyOf: (name) => tables[name] ? sqlitePrimaryKeyPropNames(tables[name]) : [],
|
|
6610
6806
|
featureOf
|
|
6611
6807
|
};
|
|
6612
6808
|
if (features.nestedWrites && db.resultKind === "sync") {
|
|
@@ -6655,6 +6851,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6655
6851
|
const outputs = {};
|
|
6656
6852
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
6657
6853
|
const tableFeatures = featureOf(tableName);
|
|
6854
|
+
const drizzleMeta = tableFieldExtensions(tableName, sqlitePrimaryKeyPropNames(schema[tableName]));
|
|
6658
6855
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
6659
6856
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
6660
6857
|
const {
|
|
@@ -6906,19 +7103,28 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6906
7103
|
type: selectArrOutput,
|
|
6907
7104
|
args: selectArrGenerated.args,
|
|
6908
7105
|
resolve: selectArrGenerated.resolver,
|
|
6909
|
-
|
|
7106
|
+
extensions: {
|
|
7107
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
7108
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
7109
|
+
}
|
|
6910
7110
|
};
|
|
6911
7111
|
queries[selectSingleGenerated.name] = {
|
|
6912
7112
|
type: selectSingleOutput,
|
|
6913
7113
|
args: selectSingleGenerated.args,
|
|
6914
|
-
resolve: selectSingleGenerated.resolver
|
|
7114
|
+
resolve: selectSingleGenerated.resolver,
|
|
7115
|
+
extensions: {
|
|
7116
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
7117
|
+
}
|
|
6915
7118
|
};
|
|
6916
7119
|
if (aggregateGenerated && aggregateType) {
|
|
6917
7120
|
queries[aggregateGenerated.name] = {
|
|
6918
7121
|
type: new import_graphql10.GraphQLNonNull(aggregateType),
|
|
6919
7122
|
args: aggregateGenerated.args,
|
|
6920
7123
|
resolve: aggregateGenerated.resolver,
|
|
6921
|
-
|
|
7124
|
+
extensions: {
|
|
7125
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
7126
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7127
|
+
}
|
|
6922
7128
|
};
|
|
6923
7129
|
}
|
|
6924
7130
|
if (groupByGenerated && groupByType) {
|
|
@@ -6926,14 +7132,20 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6926
7132
|
type: new import_graphql10.GraphQLNonNull(new import_graphql10.GraphQLList(new import_graphql10.GraphQLNonNull(groupByType))),
|
|
6927
7133
|
args: groupByGenerated.args,
|
|
6928
7134
|
resolve: groupByGenerated.resolver,
|
|
6929
|
-
|
|
7135
|
+
extensions: {
|
|
7136
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
7137
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7138
|
+
}
|
|
6930
7139
|
};
|
|
6931
7140
|
}
|
|
6932
7141
|
if (insertArrGenerated) {
|
|
6933
7142
|
mutations[insertArrGenerated.name] = {
|
|
6934
7143
|
type: arrTableItemOutput,
|
|
6935
7144
|
args: insertArrGenerated.args,
|
|
6936
|
-
resolve: insertArrGenerated.resolver
|
|
7145
|
+
resolve: insertArrGenerated.resolver,
|
|
7146
|
+
extensions: {
|
|
7147
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
7148
|
+
}
|
|
6937
7149
|
};
|
|
6938
7150
|
}
|
|
6939
7151
|
if (insertSingleGenerated) {
|
|
@@ -6942,28 +7154,40 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6942
7154
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
6943
7155
|
type: conflictDoNothing ? singleTableItemOutput : new import_graphql10.GraphQLNonNull(singleTableItemOutput),
|
|
6944
7156
|
args: insertSingleGenerated.args,
|
|
6945
|
-
resolve: insertSingleGenerated.resolver
|
|
7157
|
+
resolve: insertSingleGenerated.resolver,
|
|
7158
|
+
extensions: {
|
|
7159
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
7160
|
+
}
|
|
6946
7161
|
};
|
|
6947
7162
|
}
|
|
6948
7163
|
if (upsertArrGenerated) {
|
|
6949
7164
|
mutations[upsertArrGenerated.name] = {
|
|
6950
7165
|
type: arrTableItemOutput,
|
|
6951
7166
|
args: upsertArrGenerated.args,
|
|
6952
|
-
resolve: upsertArrGenerated.resolver
|
|
7167
|
+
resolve: upsertArrGenerated.resolver,
|
|
7168
|
+
extensions: {
|
|
7169
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
7170
|
+
}
|
|
6953
7171
|
};
|
|
6954
7172
|
}
|
|
6955
7173
|
if (upsertSingleGenerated) {
|
|
6956
7174
|
mutations[upsertSingleGenerated.name] = {
|
|
6957
7175
|
type: singleTableItemOutput,
|
|
6958
7176
|
args: upsertSingleGenerated.args,
|
|
6959
|
-
resolve: upsertSingleGenerated.resolver
|
|
7177
|
+
resolve: upsertSingleGenerated.resolver,
|
|
7178
|
+
extensions: {
|
|
7179
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
7180
|
+
}
|
|
6960
7181
|
};
|
|
6961
7182
|
}
|
|
6962
7183
|
if (updateGenerated) {
|
|
6963
7184
|
mutations[updateGenerated.name] = {
|
|
6964
7185
|
type: arrTableItemOutput,
|
|
6965
7186
|
args: updateGenerated.args,
|
|
6966
|
-
resolve: updateGenerated.resolver
|
|
7187
|
+
resolve: updateGenerated.resolver,
|
|
7188
|
+
extensions: {
|
|
7189
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
7190
|
+
}
|
|
6967
7191
|
};
|
|
6968
7192
|
}
|
|
6969
7193
|
if (updateManyGenerated) {
|
|
@@ -6971,6 +7195,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6971
7195
|
type: new import_graphql10.GraphQLNonNull(new import_graphql10.GraphQLList(singleTableItemOutput)),
|
|
6972
7196
|
args: updateManyGenerated.args,
|
|
6973
7197
|
resolve: updateManyGenerated.resolver,
|
|
7198
|
+
extensions: {
|
|
7199
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
7200
|
+
},
|
|
6974
7201
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
6975
7202
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
6976
7203
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -6981,21 +7208,30 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6981
7208
|
mutations[updateSingleGenerated.name] = {
|
|
6982
7209
|
type: singleTableItemOutput,
|
|
6983
7210
|
args: updateSingleGenerated.args,
|
|
6984
|
-
resolve: updateSingleGenerated.resolver
|
|
7211
|
+
resolve: updateSingleGenerated.resolver,
|
|
7212
|
+
extensions: {
|
|
7213
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
7214
|
+
}
|
|
6985
7215
|
};
|
|
6986
7216
|
}
|
|
6987
7217
|
if (deleteGenerated) {
|
|
6988
7218
|
mutations[deleteGenerated.name] = {
|
|
6989
7219
|
type: arrTableItemOutput,
|
|
6990
7220
|
args: deleteGenerated.args,
|
|
6991
|
-
resolve: deleteGenerated.resolver
|
|
7221
|
+
resolve: deleteGenerated.resolver,
|
|
7222
|
+
extensions: {
|
|
7223
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
7224
|
+
}
|
|
6992
7225
|
};
|
|
6993
7226
|
}
|
|
6994
7227
|
if (deleteSingleGenerated) {
|
|
6995
7228
|
mutations[deleteSingleGenerated.name] = {
|
|
6996
7229
|
type: singleTableItemOutput,
|
|
6997
7230
|
args: deleteSingleGenerated.args,
|
|
6998
|
-
resolve: deleteSingleGenerated.resolver
|
|
7231
|
+
resolve: deleteSingleGenerated.resolver,
|
|
7232
|
+
extensions: {
|
|
7233
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
7234
|
+
}
|
|
6999
7235
|
};
|
|
7000
7236
|
}
|
|
7001
7237
|
if (updateCountGenerated) {
|
|
@@ -7058,6 +7294,141 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7058
7294
|
return { queries, mutations, inputs, types: outputs, fieldResolvers };
|
|
7059
7295
|
};
|
|
7060
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
|
+
|
|
7061
7432
|
// src/index.ts
|
|
7062
7433
|
var buildSchema = (db, config) => {
|
|
7063
7434
|
const relations = db._.relations;
|
|
@@ -7080,7 +7451,7 @@ var buildSchema = (db, config) => {
|
|
|
7080
7451
|
single: config?.suffixes?.single ?? "Single"
|
|
7081
7452
|
};
|
|
7082
7453
|
const typeNameMapper = config?.typeNameMapper === "singularize" ? singularizeMapper : config?.typeNameMapper;
|
|
7083
|
-
const tableKeys = Object.entries(schema).filter(([, value]) => (0,
|
|
7454
|
+
const tableKeys = Object.entries(schema).filter(([, value]) => (0, import_drizzle_orm11.is)(value, import_drizzle_orm11.Table)).map(([key]) => key);
|
|
7084
7455
|
const excludedTableNames = new Set(config?.exclude?.tables ?? []);
|
|
7085
7456
|
const featureTables = tableKeys.filter((key) => !excludedTableNames.has(key));
|
|
7086
7457
|
const forTable = resolveTableFeatures(config?.features);
|
|
@@ -7143,7 +7514,7 @@ var buildSchema = (db, config) => {
|
|
|
7143
7514
|
if (excludedTables.has(tableName)) {
|
|
7144
7515
|
continue;
|
|
7145
7516
|
}
|
|
7146
|
-
const columns = (0,
|
|
7517
|
+
const columns = (0, import_drizzle_orm11.getColumns)(schema[tableName]);
|
|
7147
7518
|
for (const columnName of columnNames) {
|
|
7148
7519
|
const column = columns[columnName];
|
|
7149
7520
|
if (!column) {
|
|
@@ -7244,11 +7615,11 @@ var buildSchema = (db, config) => {
|
|
|
7244
7615
|
}
|
|
7245
7616
|
};
|
|
7246
7617
|
let generatorOutput;
|
|
7247
|
-
if ((0,
|
|
7618
|
+
if ((0, import_drizzle_orm11.is)(db, import_mysql_core4.MySqlDatabase)) {
|
|
7248
7619
|
generatorOutput = generateSchemaData(db, schema, relations, generatorOptions);
|
|
7249
|
-
} else if ((0,
|
|
7620
|
+
} else if ((0, import_drizzle_orm11.is)(db, import_pg_core4.PgAsyncDatabase)) {
|
|
7250
7621
|
generatorOutput = generateSchemaData2(db, schema, relations, generatorOptions);
|
|
7251
|
-
} else if ((0,
|
|
7622
|
+
} else if ((0, import_drizzle_orm11.is)(db, import_sqlite_core4.BaseSQLiteDatabase)) {
|
|
7252
7623
|
generatorOutput = generateSchemaData3(db, schema, relations, generatorOptions);
|
|
7253
7624
|
} else {
|
|
7254
7625
|
throw new Error("Drizzle-GraphQL Error: Unknown database instance type");
|
|
@@ -7288,9 +7659,14 @@ var buildSchema = (db, config) => {
|
|
|
7288
7659
|
createRelationResolverFactory,
|
|
7289
7660
|
defaultErrorMapper,
|
|
7290
7661
|
drizzleExecutorKey,
|
|
7662
|
+
drizzleExtension,
|
|
7291
7663
|
extractFilters,
|
|
7292
7664
|
extractOrderBy,
|
|
7293
7665
|
extractRelationJoinColumns,
|
|
7666
|
+
identifyRows,
|
|
7667
|
+
isDrizzleFieldExtension,
|
|
7668
|
+
resolveSelection,
|
|
7669
|
+
selectionToWith,
|
|
7294
7670
|
singularizeMapper
|
|
7295
7671
|
});
|
|
7296
7672
|
//# sourceMappingURL=index.cjs.map
|