@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.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
|
|
@@ -606,6 +606,123 @@ var remapFromGraphQLArrayInput = (queryInput, table) => {
|
|
|
606
606
|
return queryInput;
|
|
607
607
|
};
|
|
608
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
|
+
|
|
609
726
|
// src/util/builders/field-updates.ts
|
|
610
727
|
import { getColumns, sql } from "drizzle-orm";
|
|
611
728
|
import {
|
|
@@ -1159,6 +1276,14 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx, limits
|
|
|
1159
1276
|
return loader.load(localValue);
|
|
1160
1277
|
};
|
|
1161
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
|
+
});
|
|
1162
1287
|
var columnDocs = (docs, column, tableName, columnName) => {
|
|
1163
1288
|
const description = docs.describeColumn?.(column, { tableName, columnName });
|
|
1164
1289
|
const deprecationReason = docs.deprecateColumn?.(column, { tableName, columnName });
|
|
@@ -1838,7 +1963,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1838
1963
|
const shell = new GraphQLObjectType2({
|
|
1839
1964
|
name: typeName,
|
|
1840
1965
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
1841
|
-
fields: () => ({ ...tableFields, ...container.fields })
|
|
1966
|
+
fields: () => ({ ...tableFields, ...container.fields }),
|
|
1967
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
1842
1968
|
});
|
|
1843
1969
|
cacheCtx.objectTypeCache.set(tableName, shell);
|
|
1844
1970
|
}
|
|
@@ -1880,7 +2006,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1880
2006
|
relType = new GraphQLObjectType2({
|
|
1881
2007
|
name: resolveTypeName(targetTableName, typeNameMapper),
|
|
1882
2008
|
description: cacheCtx.docs.describeTable?.(targetTableName),
|
|
1883
|
-
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields })
|
|
2009
|
+
fields: () => ({ ...targetTableFields, ...capturedTargetContainer.fields }),
|
|
2010
|
+
extensions: {
|
|
2011
|
+
drizzle: tableTypeExtension(targetTableName, cacheCtx.primaryKeyOf?.(targetTableName) ?? [])
|
|
2012
|
+
}
|
|
1884
2013
|
});
|
|
1885
2014
|
cacheCtx.objectTypeCache.set(targetTableName, relType);
|
|
1886
2015
|
}
|
|
@@ -1897,7 +2026,8 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1897
2026
|
where: { type: relSelectData.filters }
|
|
1898
2027
|
},
|
|
1899
2028
|
resolve,
|
|
1900
|
-
...relationDocs
|
|
2029
|
+
...relationDocs,
|
|
2030
|
+
extensions: { drizzle: relationExtensionFor(relEntry, tableName, relationName, true) }
|
|
1901
2031
|
}
|
|
1902
2032
|
]);
|
|
1903
2033
|
continue;
|
|
@@ -1920,11 +2050,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1920
2050
|
},
|
|
1921
2051
|
resolve,
|
|
1922
2052
|
...relationDocs,
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
} : {}
|
|
2053
|
+
extensions: {
|
|
2054
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, false),
|
|
2055
|
+
...cacheCtx.complexity ? { complexity: listFieldComplexity(cacheCtx.complexity, cacheCtx.limits?.(targetTableName)) } : {}
|
|
2056
|
+
}
|
|
1928
2057
|
}
|
|
1929
2058
|
]);
|
|
1930
2059
|
const aggregateFieldName = `${relationName}Aggregate`;
|
|
@@ -1943,7 +2072,10 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1943
2072
|
where: { type: relSelectData.filters }
|
|
1944
2073
|
},
|
|
1945
2074
|
resolve: relationAggregate.resolve,
|
|
1946
|
-
|
|
2075
|
+
extensions: {
|
|
2076
|
+
drizzle: relationExtensionFor(relEntry, tableName, relationName, isOne, true),
|
|
2077
|
+
...cacheCtx.complexity ? { complexity: aggregateFieldComplexity(cacheCtx.complexity) } : {}
|
|
2078
|
+
}
|
|
1947
2079
|
}
|
|
1948
2080
|
]);
|
|
1949
2081
|
}
|
|
@@ -2029,7 +2161,8 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
2029
2161
|
const selectSingleOutput = cacheCtx.objectTypeCache.get(tableName) ?? new GraphQLObjectType2({
|
|
2030
2162
|
name: resolveTypeName(tableName, typeNameMapper),
|
|
2031
2163
|
description: cacheCtx.docs.describeTable?.(tableName),
|
|
2032
|
-
fields: { ...tableFields, ...relationFields }
|
|
2164
|
+
fields: { ...tableFields, ...relationFields },
|
|
2165
|
+
extensions: { drizzle: tableTypeExtension(tableName, cacheCtx.primaryKeyOf?.(tableName) ?? []) }
|
|
2033
2166
|
});
|
|
2034
2167
|
const selectArrOutput = new GraphQLNonNull3(new GraphQLList3(new GraphQLNonNull3(selectSingleOutput)));
|
|
2035
2168
|
const arrTableItemOutput = withReturning ? (
|
|
@@ -4272,6 +4405,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4272
4405
|
complexity,
|
|
4273
4406
|
limits,
|
|
4274
4407
|
docs: options.docs ?? {},
|
|
4408
|
+
primaryKeyOf: (name) => tables[name] ? mysqlPrimaryKeyPropNames(tables[name]) : [],
|
|
4275
4409
|
featureOf
|
|
4276
4410
|
};
|
|
4277
4411
|
const relationAggregateFactory = anyTable("relationAggregates") ? createRelationAggregateFactory(db, tables, cacheCtx, typeNameMapper, filterCtx) : void 0;
|
|
@@ -4311,6 +4445,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4311
4445
|
}
|
|
4312
4446
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
4313
4447
|
const tableFeatures = featureOf(tableName);
|
|
4448
|
+
const drizzleMeta = tableFieldExtensions(tableName, mysqlPrimaryKeyPropNames(schema[tableName]));
|
|
4314
4449
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
4315
4450
|
const { selectSingleOutput, selectArrOutput } = tableTypes.outputs;
|
|
4316
4451
|
const {
|
|
@@ -4506,19 +4641,28 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4506
4641
|
type: selectArrOutput,
|
|
4507
4642
|
args: selectArrGenerated.args,
|
|
4508
4643
|
resolve: selectArrGenerated.resolver,
|
|
4509
|
-
|
|
4644
|
+
extensions: {
|
|
4645
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
4646
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
4647
|
+
}
|
|
4510
4648
|
};
|
|
4511
4649
|
queries[selectSingleGenerated.name] = {
|
|
4512
4650
|
type: selectSingleOutput,
|
|
4513
4651
|
args: selectSingleGenerated.args,
|
|
4514
|
-
resolve: selectSingleGenerated.resolver
|
|
4652
|
+
resolve: selectSingleGenerated.resolver,
|
|
4653
|
+
extensions: {
|
|
4654
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
4655
|
+
}
|
|
4515
4656
|
};
|
|
4516
4657
|
if (aggregateGenerated && aggregateType) {
|
|
4517
4658
|
queries[aggregateGenerated.name] = {
|
|
4518
4659
|
type: new GraphQLNonNull5(aggregateType),
|
|
4519
4660
|
args: aggregateGenerated.args,
|
|
4520
4661
|
resolve: aggregateGenerated.resolver,
|
|
4521
|
-
|
|
4662
|
+
extensions: {
|
|
4663
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
4664
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4665
|
+
}
|
|
4522
4666
|
};
|
|
4523
4667
|
}
|
|
4524
4668
|
if (groupByGenerated && groupByType) {
|
|
@@ -4526,25 +4670,30 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4526
4670
|
type: new GraphQLNonNull5(new GraphQLList5(new GraphQLNonNull5(groupByType))),
|
|
4527
4671
|
args: groupByGenerated.args,
|
|
4528
4672
|
resolve: groupByGenerated.resolver,
|
|
4529
|
-
|
|
4673
|
+
extensions: {
|
|
4674
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
4675
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
4676
|
+
}
|
|
4530
4677
|
};
|
|
4531
4678
|
}
|
|
4532
|
-
|
|
4533
|
-
insertArrGenerated,
|
|
4534
|
-
insertSingleGenerated,
|
|
4535
|
-
upsertArrGenerated,
|
|
4536
|
-
upsertSingleGenerated,
|
|
4537
|
-
updateGenerated,
|
|
4538
|
-
updateManyGenerated,
|
|
4539
|
-
updateSingleGenerated,
|
|
4540
|
-
deleteGenerated,
|
|
4541
|
-
deleteSingleGenerated
|
|
4542
|
-
]
|
|
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) {
|
|
4543
4691
|
if (generated) {
|
|
4544
4692
|
mutations[generated.name] = {
|
|
4545
4693
|
type: mutationReturnType,
|
|
4546
4694
|
args: generated.args,
|
|
4547
|
-
resolve: generated.resolver
|
|
4695
|
+
resolve: generated.resolver,
|
|
4696
|
+
extensions: { drizzle: drizzleMeta({ kind: "mutation", ...meta }) }
|
|
4548
4697
|
};
|
|
4549
4698
|
}
|
|
4550
4699
|
}
|
|
@@ -5645,6 +5794,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5645
5794
|
complexity,
|
|
5646
5795
|
limits,
|
|
5647
5796
|
docs: options.docs ?? {},
|
|
5797
|
+
primaryKeyOf: (name) => tables[name] ? pgPrimaryKeyPropNames(tables[name]) : [],
|
|
5648
5798
|
featureOf
|
|
5649
5799
|
};
|
|
5650
5800
|
const nestedPlans = features.nestedWrites ? buildNestedWritePlans(
|
|
@@ -5683,6 +5833,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5683
5833
|
const outputs = {};
|
|
5684
5834
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
5685
5835
|
const tableFeatures = featureOf(tableName);
|
|
5836
|
+
const drizzleMeta = tableFieldExtensions(tableName, pgPrimaryKeyPropNames(schema[tableName]));
|
|
5686
5837
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
5687
5838
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
5688
5839
|
const {
|
|
@@ -5934,19 +6085,28 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5934
6085
|
type: selectArrOutput,
|
|
5935
6086
|
args: selectArrGenerated.args,
|
|
5936
6087
|
resolve: selectArrGenerated.resolver,
|
|
5937
|
-
|
|
6088
|
+
extensions: {
|
|
6089
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
6090
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
6091
|
+
}
|
|
5938
6092
|
};
|
|
5939
6093
|
queries[selectSingleGenerated.name] = {
|
|
5940
6094
|
type: selectSingleOutput,
|
|
5941
6095
|
args: selectSingleGenerated.args,
|
|
5942
|
-
resolve: selectSingleGenerated.resolver
|
|
6096
|
+
resolve: selectSingleGenerated.resolver,
|
|
6097
|
+
extensions: {
|
|
6098
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
6099
|
+
}
|
|
5943
6100
|
};
|
|
5944
6101
|
if (aggregateGenerated && aggregateType) {
|
|
5945
6102
|
queries[aggregateGenerated.name] = {
|
|
5946
6103
|
type: new GraphQLNonNull7(aggregateType),
|
|
5947
6104
|
args: aggregateGenerated.args,
|
|
5948
6105
|
resolve: aggregateGenerated.resolver,
|
|
5949
|
-
|
|
6106
|
+
extensions: {
|
|
6107
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
6108
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6109
|
+
}
|
|
5950
6110
|
};
|
|
5951
6111
|
}
|
|
5952
6112
|
if (groupByGenerated && groupByType) {
|
|
@@ -5954,14 +6114,20 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5954
6114
|
type: new GraphQLNonNull7(new GraphQLList7(new GraphQLNonNull7(groupByType))),
|
|
5955
6115
|
args: groupByGenerated.args,
|
|
5956
6116
|
resolve: groupByGenerated.resolver,
|
|
5957
|
-
|
|
6117
|
+
extensions: {
|
|
6118
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
6119
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
6120
|
+
}
|
|
5958
6121
|
};
|
|
5959
6122
|
}
|
|
5960
6123
|
if (insertArrGenerated) {
|
|
5961
6124
|
mutations[insertArrGenerated.name] = {
|
|
5962
6125
|
type: arrTableItemOutput,
|
|
5963
6126
|
args: insertArrGenerated.args,
|
|
5964
|
-
resolve: insertArrGenerated.resolver
|
|
6127
|
+
resolve: insertArrGenerated.resolver,
|
|
6128
|
+
extensions: {
|
|
6129
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
6130
|
+
}
|
|
5965
6131
|
};
|
|
5966
6132
|
}
|
|
5967
6133
|
if (insertSingleGenerated) {
|
|
@@ -5970,28 +6136,40 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5970
6136
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
5971
6137
|
type: conflictDoNothing ? singleTableItemOutput : new GraphQLNonNull7(singleTableItemOutput),
|
|
5972
6138
|
args: insertSingleGenerated.args,
|
|
5973
|
-
resolve: insertSingleGenerated.resolver
|
|
6139
|
+
resolve: insertSingleGenerated.resolver,
|
|
6140
|
+
extensions: {
|
|
6141
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
6142
|
+
}
|
|
5974
6143
|
};
|
|
5975
6144
|
}
|
|
5976
6145
|
if (upsertArrGenerated) {
|
|
5977
6146
|
mutations[upsertArrGenerated.name] = {
|
|
5978
6147
|
type: arrTableItemOutput,
|
|
5979
6148
|
args: upsertArrGenerated.args,
|
|
5980
|
-
resolve: upsertArrGenerated.resolver
|
|
6149
|
+
resolve: upsertArrGenerated.resolver,
|
|
6150
|
+
extensions: {
|
|
6151
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
6152
|
+
}
|
|
5981
6153
|
};
|
|
5982
6154
|
}
|
|
5983
6155
|
if (upsertSingleGenerated) {
|
|
5984
6156
|
mutations[upsertSingleGenerated.name] = {
|
|
5985
6157
|
type: singleTableItemOutput,
|
|
5986
6158
|
args: upsertSingleGenerated.args,
|
|
5987
|
-
resolve: upsertSingleGenerated.resolver
|
|
6159
|
+
resolve: upsertSingleGenerated.resolver,
|
|
6160
|
+
extensions: {
|
|
6161
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
6162
|
+
}
|
|
5988
6163
|
};
|
|
5989
6164
|
}
|
|
5990
6165
|
if (updateGenerated) {
|
|
5991
6166
|
mutations[updateGenerated.name] = {
|
|
5992
6167
|
type: arrTableItemOutput,
|
|
5993
6168
|
args: updateGenerated.args,
|
|
5994
|
-
resolve: updateGenerated.resolver
|
|
6169
|
+
resolve: updateGenerated.resolver,
|
|
6170
|
+
extensions: {
|
|
6171
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
6172
|
+
}
|
|
5995
6173
|
};
|
|
5996
6174
|
}
|
|
5997
6175
|
if (updateManyGenerated) {
|
|
@@ -5999,6 +6177,9 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5999
6177
|
type: new GraphQLNonNull7(new GraphQLList7(singleTableItemOutput)),
|
|
6000
6178
|
args: updateManyGenerated.args,
|
|
6001
6179
|
resolve: updateManyGenerated.resolver,
|
|
6180
|
+
extensions: {
|
|
6181
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
6182
|
+
},
|
|
6002
6183
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
6003
6184
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
6004
6185
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -6009,21 +6190,30 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
6009
6190
|
mutations[updateSingleGenerated.name] = {
|
|
6010
6191
|
type: singleTableItemOutput,
|
|
6011
6192
|
args: updateSingleGenerated.args,
|
|
6012
|
-
resolve: updateSingleGenerated.resolver
|
|
6193
|
+
resolve: updateSingleGenerated.resolver,
|
|
6194
|
+
extensions: {
|
|
6195
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
6196
|
+
}
|
|
6013
6197
|
};
|
|
6014
6198
|
}
|
|
6015
6199
|
if (deleteGenerated) {
|
|
6016
6200
|
mutations[deleteGenerated.name] = {
|
|
6017
6201
|
type: arrTableItemOutput,
|
|
6018
6202
|
args: deleteGenerated.args,
|
|
6019
|
-
resolve: deleteGenerated.resolver
|
|
6203
|
+
resolve: deleteGenerated.resolver,
|
|
6204
|
+
extensions: {
|
|
6205
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
6206
|
+
}
|
|
6020
6207
|
};
|
|
6021
6208
|
}
|
|
6022
6209
|
if (deleteSingleGenerated) {
|
|
6023
6210
|
mutations[deleteSingleGenerated.name] = {
|
|
6024
6211
|
type: singleTableItemOutput,
|
|
6025
6212
|
args: deleteSingleGenerated.args,
|
|
6026
|
-
resolve: deleteSingleGenerated.resolver
|
|
6213
|
+
resolve: deleteSingleGenerated.resolver,
|
|
6214
|
+
extensions: {
|
|
6215
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
6216
|
+
}
|
|
6027
6217
|
};
|
|
6028
6218
|
}
|
|
6029
6219
|
if (updateCountGenerated) {
|
|
@@ -6670,6 +6860,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6670
6860
|
complexity,
|
|
6671
6861
|
limits,
|
|
6672
6862
|
docs: options.docs ?? {},
|
|
6863
|
+
primaryKeyOf: (name) => tables[name] ? sqlitePrimaryKeyPropNames(tables[name]) : [],
|
|
6673
6864
|
featureOf
|
|
6674
6865
|
};
|
|
6675
6866
|
if (features.nestedWrites && db.resultKind === "sync") {
|
|
@@ -6718,6 +6909,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6718
6909
|
const outputs = {};
|
|
6719
6910
|
for (const [tableName, tableTypes] of Object.entries(gqlSchemaTypes)) {
|
|
6720
6911
|
const tableFeatures = featureOf(tableName);
|
|
6912
|
+
const drizzleMeta = tableFieldExtensions(tableName, sqlitePrimaryKeyPropNames(schema[tableName]));
|
|
6721
6913
|
const { insertInput, updateInput, tableFilters, tableOrder } = tableTypes.inputs;
|
|
6722
6914
|
const { selectSingleOutput, selectArrOutput, singleTableItemOutput, arrTableItemOutput } = tableTypes.outputs;
|
|
6723
6915
|
const {
|
|
@@ -6969,19 +7161,28 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6969
7161
|
type: selectArrOutput,
|
|
6970
7162
|
args: selectArrGenerated.args,
|
|
6971
7163
|
resolve: selectArrGenerated.resolver,
|
|
6972
|
-
|
|
7164
|
+
extensions: {
|
|
7165
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: false, targetArg: "where" }),
|
|
7166
|
+
...complexity ? { complexity: listFieldComplexity(complexity, limits?.(tableName)) } : {}
|
|
7167
|
+
}
|
|
6973
7168
|
};
|
|
6974
7169
|
queries[selectSingleGenerated.name] = {
|
|
6975
7170
|
type: selectSingleOutput,
|
|
6976
7171
|
args: selectSingleGenerated.args,
|
|
6977
|
-
resolve: selectSingleGenerated.resolver
|
|
7172
|
+
resolve: selectSingleGenerated.resolver,
|
|
7173
|
+
extensions: {
|
|
7174
|
+
drizzle: drizzleMeta({ kind: "query", operation: "select", single: true, targetArg: "where" })
|
|
7175
|
+
}
|
|
6978
7176
|
};
|
|
6979
7177
|
if (aggregateGenerated && aggregateType) {
|
|
6980
7178
|
queries[aggregateGenerated.name] = {
|
|
6981
7179
|
type: new GraphQLNonNull8(aggregateType),
|
|
6982
7180
|
args: aggregateGenerated.args,
|
|
6983
7181
|
resolve: aggregateGenerated.resolver,
|
|
6984
|
-
|
|
7182
|
+
extensions: {
|
|
7183
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "aggregate", single: true, targetArg: "where" }),
|
|
7184
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7185
|
+
}
|
|
6985
7186
|
};
|
|
6986
7187
|
}
|
|
6987
7188
|
if (groupByGenerated && groupByType) {
|
|
@@ -6989,14 +7190,20 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6989
7190
|
type: new GraphQLNonNull8(new GraphQLList8(new GraphQLNonNull8(groupByType))),
|
|
6990
7191
|
args: groupByGenerated.args,
|
|
6991
7192
|
resolve: groupByGenerated.resolver,
|
|
6992
|
-
|
|
7193
|
+
extensions: {
|
|
7194
|
+
drizzle: drizzleMeta({ kind: "aggregate", operation: "groupBy", single: false, targetArg: "where" }),
|
|
7195
|
+
...complexity ? { complexity: aggregateFieldComplexity(complexity) } : {}
|
|
7196
|
+
}
|
|
6993
7197
|
};
|
|
6994
7198
|
}
|
|
6995
7199
|
if (insertArrGenerated) {
|
|
6996
7200
|
mutations[insertArrGenerated.name] = {
|
|
6997
7201
|
type: arrTableItemOutput,
|
|
6998
7202
|
args: insertArrGenerated.args,
|
|
6999
|
-
resolve: insertArrGenerated.resolver
|
|
7203
|
+
resolve: insertArrGenerated.resolver,
|
|
7204
|
+
extensions: {
|
|
7205
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: false, targetArg: "values" })
|
|
7206
|
+
}
|
|
7000
7207
|
};
|
|
7001
7208
|
}
|
|
7002
7209
|
if (insertSingleGenerated) {
|
|
@@ -7005,28 +7212,40 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7005
7212
|
// `conflictDoNothing` swallowing the insert, so the field is nullable only there.
|
|
7006
7213
|
type: conflictDoNothing ? singleTableItemOutput : new GraphQLNonNull8(singleTableItemOutput),
|
|
7007
7214
|
args: insertSingleGenerated.args,
|
|
7008
|
-
resolve: insertSingleGenerated.resolver
|
|
7215
|
+
resolve: insertSingleGenerated.resolver,
|
|
7216
|
+
extensions: {
|
|
7217
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "insert", single: true, targetArg: "values" })
|
|
7218
|
+
}
|
|
7009
7219
|
};
|
|
7010
7220
|
}
|
|
7011
7221
|
if (upsertArrGenerated) {
|
|
7012
7222
|
mutations[upsertArrGenerated.name] = {
|
|
7013
7223
|
type: arrTableItemOutput,
|
|
7014
7224
|
args: upsertArrGenerated.args,
|
|
7015
|
-
resolve: upsertArrGenerated.resolver
|
|
7225
|
+
resolve: upsertArrGenerated.resolver,
|
|
7226
|
+
extensions: {
|
|
7227
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: false, targetArg: "values" })
|
|
7228
|
+
}
|
|
7016
7229
|
};
|
|
7017
7230
|
}
|
|
7018
7231
|
if (upsertSingleGenerated) {
|
|
7019
7232
|
mutations[upsertSingleGenerated.name] = {
|
|
7020
7233
|
type: singleTableItemOutput,
|
|
7021
7234
|
args: upsertSingleGenerated.args,
|
|
7022
|
-
resolve: upsertSingleGenerated.resolver
|
|
7235
|
+
resolve: upsertSingleGenerated.resolver,
|
|
7236
|
+
extensions: {
|
|
7237
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "upsert", single: true, targetArg: "values" })
|
|
7238
|
+
}
|
|
7023
7239
|
};
|
|
7024
7240
|
}
|
|
7025
7241
|
if (updateGenerated) {
|
|
7026
7242
|
mutations[updateGenerated.name] = {
|
|
7027
7243
|
type: arrTableItemOutput,
|
|
7028
7244
|
args: updateGenerated.args,
|
|
7029
|
-
resolve: updateGenerated.resolver
|
|
7245
|
+
resolve: updateGenerated.resolver,
|
|
7246
|
+
extensions: {
|
|
7247
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: false, targetArg: "where" })
|
|
7248
|
+
}
|
|
7030
7249
|
};
|
|
7031
7250
|
}
|
|
7032
7251
|
if (updateManyGenerated) {
|
|
@@ -7034,6 +7253,9 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7034
7253
|
type: new GraphQLNonNull8(new GraphQLList8(singleTableItemOutput)),
|
|
7035
7254
|
args: updateManyGenerated.args,
|
|
7036
7255
|
resolve: updateManyGenerated.resolver,
|
|
7256
|
+
extensions: {
|
|
7257
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "updateMany", single: false, targetArg: "updates" })
|
|
7258
|
+
},
|
|
7037
7259
|
// The nullable element is deliberate, and the reason this mutation's return type
|
|
7038
7260
|
// differs from every sibling's: the result is aligned with the input, one slot per
|
|
7039
7261
|
// entry, so an entry that matched nothing has to be able to say so.
|
|
@@ -7044,21 +7266,30 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7044
7266
|
mutations[updateSingleGenerated.name] = {
|
|
7045
7267
|
type: singleTableItemOutput,
|
|
7046
7268
|
args: updateSingleGenerated.args,
|
|
7047
|
-
resolve: updateSingleGenerated.resolver
|
|
7269
|
+
resolve: updateSingleGenerated.resolver,
|
|
7270
|
+
extensions: {
|
|
7271
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "update", single: true, targetArg: "where" })
|
|
7272
|
+
}
|
|
7048
7273
|
};
|
|
7049
7274
|
}
|
|
7050
7275
|
if (deleteGenerated) {
|
|
7051
7276
|
mutations[deleteGenerated.name] = {
|
|
7052
7277
|
type: arrTableItemOutput,
|
|
7053
7278
|
args: deleteGenerated.args,
|
|
7054
|
-
resolve: deleteGenerated.resolver
|
|
7279
|
+
resolve: deleteGenerated.resolver,
|
|
7280
|
+
extensions: {
|
|
7281
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: false, targetArg: "where" })
|
|
7282
|
+
}
|
|
7055
7283
|
};
|
|
7056
7284
|
}
|
|
7057
7285
|
if (deleteSingleGenerated) {
|
|
7058
7286
|
mutations[deleteSingleGenerated.name] = {
|
|
7059
7287
|
type: singleTableItemOutput,
|
|
7060
7288
|
args: deleteSingleGenerated.args,
|
|
7061
|
-
resolve: deleteSingleGenerated.resolver
|
|
7289
|
+
resolve: deleteSingleGenerated.resolver,
|
|
7290
|
+
extensions: {
|
|
7291
|
+
drizzle: drizzleMeta({ kind: "mutation", operation: "delete", single: true, targetArg: "where" })
|
|
7292
|
+
}
|
|
7062
7293
|
};
|
|
7063
7294
|
}
|
|
7064
7295
|
if (updateCountGenerated) {
|
|
@@ -7121,6 +7352,141 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
7121
7352
|
return { queries, mutations, inputs, types: outputs, fieldResolvers };
|
|
7122
7353
|
};
|
|
7123
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
|
+
|
|
7124
7490
|
// src/index.ts
|
|
7125
7491
|
var buildSchema = (db, config) => {
|
|
7126
7492
|
const relations = db._.relations;
|
|
@@ -7143,7 +7509,7 @@ var buildSchema = (db, config) => {
|
|
|
7143
7509
|
single: config?.suffixes?.single ?? "Single"
|
|
7144
7510
|
};
|
|
7145
7511
|
const typeNameMapper = config?.typeNameMapper === "singularize" ? singularizeMapper : config?.typeNameMapper;
|
|
7146
|
-
const tableKeys = Object.entries(schema).filter(([, value]) =>
|
|
7512
|
+
const tableKeys = Object.entries(schema).filter(([, value]) => is9(value, Table2)).map(([key]) => key);
|
|
7147
7513
|
const excludedTableNames = new Set(config?.exclude?.tables ?? []);
|
|
7148
7514
|
const featureTables = tableKeys.filter((key) => !excludedTableNames.has(key));
|
|
7149
7515
|
const forTable = resolveTableFeatures(config?.features);
|
|
@@ -7307,11 +7673,11 @@ var buildSchema = (db, config) => {
|
|
|
7307
7673
|
}
|
|
7308
7674
|
};
|
|
7309
7675
|
let generatorOutput;
|
|
7310
|
-
if (
|
|
7676
|
+
if (is9(db, MySqlDatabase2)) {
|
|
7311
7677
|
generatorOutput = generateSchemaData(db, schema, relations, generatorOptions);
|
|
7312
|
-
} else if (
|
|
7678
|
+
} else if (is9(db, PgAsyncDatabase2)) {
|
|
7313
7679
|
generatorOutput = generateSchemaData2(db, schema, relations, generatorOptions);
|
|
7314
|
-
} else if (
|
|
7680
|
+
} else if (is9(db, BaseSQLiteDatabase2)) {
|
|
7315
7681
|
generatorOutput = generateSchemaData3(db, schema, relations, generatorOptions);
|
|
7316
7682
|
} else {
|
|
7317
7683
|
throw new Error("Drizzle-GraphQL Error: Unknown database instance type");
|
|
@@ -7350,9 +7716,14 @@ export {
|
|
|
7350
7716
|
createRelationResolverFactory,
|
|
7351
7717
|
defaultErrorMapper,
|
|
7352
7718
|
drizzleExecutorKey,
|
|
7719
|
+
drizzleExtension,
|
|
7353
7720
|
extractFilters,
|
|
7354
7721
|
extractOrderBy,
|
|
7355
7722
|
extractRelationJoinColumns,
|
|
7723
|
+
identifyRows,
|
|
7724
|
+
isDrizzleFieldExtension,
|
|
7725
|
+
resolveSelection,
|
|
7726
|
+
selectionToWith,
|
|
7356
7727
|
singularizeMapper
|
|
7357
7728
|
};
|
|
7358
7729
|
//# sourceMappingURL=index.js.map
|