@vantreeseba/drizzle-graphql 7.0.0 → 7.2.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 +316 -7
- package/dist/README.md +316 -7
- package/dist/index.cjs +317 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +118 -2
- package/dist/index.d.ts +118 -2
- package/dist/index.js +318 -85
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { is as is8 } from "drizzle-orm";
|
|
2
|
+
import { getColumns as getColumns6, is as is8, Table } from "drizzle-orm";
|
|
3
3
|
import { MySqlDatabase } from "drizzle-orm/mysql-core";
|
|
4
4
|
import { PgAsyncDatabase } from "drizzle-orm/pg-core";
|
|
5
5
|
import { BaseSQLiteDatabase } from "drizzle-orm/sqlite-core";
|
|
@@ -1033,7 +1033,7 @@ var batchedPaginatedRelationQuery = async (db, targetTable, foreignCol, whereCon
|
|
|
1033
1033
|
}
|
|
1034
1034
|
return rows;
|
|
1035
1035
|
};
|
|
1036
|
-
var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx) => ({ tableName, relationName, relEntry, isOne }) => {
|
|
1036
|
+
var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx, limits) => ({ tableName, relationName, relEntry, isOne }) => {
|
|
1037
1037
|
const parentTable = tables[tableName];
|
|
1038
1038
|
const targetTableName = relEntry.targetTableName;
|
|
1039
1039
|
const targetTable = tables[targetTableName];
|
|
@@ -1045,6 +1045,7 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx) => ({
|
|
|
1045
1045
|
return void 0;
|
|
1046
1046
|
}
|
|
1047
1047
|
const { localColPropName, foreignCol, foreignColPropName } = joinCols;
|
|
1048
|
+
const limitPolicy = isOne ? void 0 : limits?.(targetTableName);
|
|
1048
1049
|
const targetPkNames = relEntry.targetPkNames ?? [];
|
|
1049
1050
|
return async (parent, args, context, info) => {
|
|
1050
1051
|
if (parent[relationName] !== void 0) {
|
|
@@ -1054,7 +1055,8 @@ var createRelationResolverFactory = (db, tables, nullOrdering, filterCtx) => ({
|
|
|
1054
1055
|
if (localValue == null) {
|
|
1055
1056
|
return isOne ? null : [];
|
|
1056
1057
|
}
|
|
1057
|
-
const { where: whereArg, orderBy: orderByArg, limit, offset, after } = args ?? {};
|
|
1058
|
+
const { where: whereArg, orderBy: orderByArg, limit: requestedLimit, offset, after } = args ?? {};
|
|
1059
|
+
const limit = applyLimitPolicy(requestedLimit, limitPolicy, `${tableName}.${relationName}`);
|
|
1058
1060
|
const distinct = (args ?? {}).distinct?.length ? (args ?? {}).distinct : void 0;
|
|
1059
1061
|
const cursorSelected = !isOne && !!info && selectsCursorField(info, targetTable);
|
|
1060
1062
|
let cursorEntries;
|
|
@@ -1168,9 +1170,65 @@ var inputFieldDocs = (docs, column, tableName, columnName, fieldType) => {
|
|
|
1168
1170
|
}
|
|
1169
1171
|
return resolved;
|
|
1170
1172
|
};
|
|
1171
|
-
var
|
|
1173
|
+
var applyLimitPolicy = (limit, policy, fieldName) => {
|
|
1174
|
+
if (!policy) {
|
|
1175
|
+
return limit ?? void 0;
|
|
1176
|
+
}
|
|
1177
|
+
const { defaultLimit, maxLimit, clampToMax } = policy;
|
|
1178
|
+
if (limit == null) {
|
|
1179
|
+
const fallback = defaultLimit ?? maxLimit;
|
|
1180
|
+
if (fallback === void 0) {
|
|
1181
|
+
return void 0;
|
|
1182
|
+
}
|
|
1183
|
+
return maxLimit === void 0 ? fallback : Math.min(fallback, maxLimit);
|
|
1184
|
+
}
|
|
1185
|
+
if (maxLimit !== void 0 && limit > maxLimit) {
|
|
1186
|
+
if (clampToMax) {
|
|
1187
|
+
return maxLimit;
|
|
1188
|
+
}
|
|
1189
|
+
throw new GraphQLError4(`${fieldName}: 'limit' of ${limit} exceeds the maximum of ${maxLimit}.`);
|
|
1190
|
+
}
|
|
1191
|
+
return limit;
|
|
1192
|
+
};
|
|
1193
|
+
var resolveLimitPolicy = (global, table) => {
|
|
1194
|
+
const defaultLimit = table?.defaultLimit ?? global?.defaultLimit;
|
|
1195
|
+
const maxLimit = table?.maxLimit ?? global?.maxLimit;
|
|
1196
|
+
if (defaultLimit === void 0 && maxLimit === void 0) {
|
|
1197
|
+
return void 0;
|
|
1198
|
+
}
|
|
1199
|
+
return { defaultLimit, maxLimit, clampToMax: table?.clampToMax ?? global?.clampToMax ?? false };
|
|
1200
|
+
};
|
|
1201
|
+
var excludedColumnRegistry = /* @__PURE__ */ new WeakMap();
|
|
1202
|
+
var registerColumnExclusions = (tables, exclude) => {
|
|
1203
|
+
for (const [tableName, table] of Object.entries(tables)) {
|
|
1204
|
+
const hidden = exclude?.columns?.[tableName];
|
|
1205
|
+
if (hidden?.length) {
|
|
1206
|
+
excludedColumnRegistry.set(table, new Set(hidden));
|
|
1207
|
+
} else {
|
|
1208
|
+
excludedColumnRegistry.delete(table);
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
};
|
|
1212
|
+
var hasExcludedColumns = (table) => excludedColumnRegistry.has(table);
|
|
1213
|
+
var excludedColumnsKey = (table) => {
|
|
1214
|
+
const hidden = excludedColumnRegistry.get(table);
|
|
1215
|
+
return hidden ? [...hidden].sort().join(",") : "";
|
|
1216
|
+
};
|
|
1217
|
+
var visibleColumns = (table) => {
|
|
1218
|
+
const columns = getColumns2(table);
|
|
1219
|
+
const hidden = excludedColumnRegistry.get(table);
|
|
1220
|
+
if (!hidden) {
|
|
1221
|
+
return columns;
|
|
1222
|
+
}
|
|
1223
|
+
return Object.fromEntries(Object.entries(columns).filter(([columnName]) => !hidden.has(columnName)));
|
|
1224
|
+
};
|
|
1225
|
+
var listFieldComplexity = (options, policy) => ({ args, childComplexity }) => {
|
|
1172
1226
|
const limit = args["limit"];
|
|
1173
|
-
const
|
|
1227
|
+
const requested = typeof limit === "number" && limit > 0 ? limit : void 0;
|
|
1228
|
+
let rows = requested ?? policy?.defaultLimit ?? options.defaultListSize;
|
|
1229
|
+
if (policy?.maxLimit !== void 0) {
|
|
1230
|
+
rows = Math.min(rows, policy.maxLimit);
|
|
1231
|
+
}
|
|
1174
1232
|
return rows * Math.max(childComplexity, 1);
|
|
1175
1233
|
};
|
|
1176
1234
|
var aggregateFieldComplexity = (options) => ({ childComplexity }) => options.aggregateCost + childComplexity;
|
|
@@ -1473,17 +1531,20 @@ var generateColumnFilterValues = (column, tableName, columnName, cacheCtx) => {
|
|
|
1473
1531
|
};
|
|
1474
1532
|
var orderMap = /* @__PURE__ */ new WeakMap();
|
|
1475
1533
|
var generateTableOrderCached = (table) => {
|
|
1476
|
-
|
|
1534
|
+
const cacheable = !hasExcludedColumns(table);
|
|
1535
|
+
if (cacheable && orderMap.has(table)) {
|
|
1477
1536
|
return orderMap.get(table);
|
|
1478
1537
|
}
|
|
1479
1538
|
let remapped = {};
|
|
1480
1539
|
try {
|
|
1481
|
-
const columns =
|
|
1540
|
+
const columns = visibleColumns(table);
|
|
1482
1541
|
const columnEntries = Object.entries(columns);
|
|
1483
1542
|
remapped = Object.fromEntries(
|
|
1484
1543
|
columnEntries.map(([columnName, _columnDescription]) => [columnName, { type: innerOrder }])
|
|
1485
1544
|
);
|
|
1486
|
-
|
|
1545
|
+
if (cacheable) {
|
|
1546
|
+
orderMap.set(table, remapped);
|
|
1547
|
+
}
|
|
1487
1548
|
} catch (_err) {
|
|
1488
1549
|
}
|
|
1489
1550
|
return remapped;
|
|
@@ -1492,7 +1553,7 @@ var generateTableFilterValuesCached = (table, tableName, cacheCtx) => {
|
|
|
1492
1553
|
if (cacheCtx.filterFieldCache.has(table)) {
|
|
1493
1554
|
return cacheCtx.filterFieldCache.get(table);
|
|
1494
1555
|
}
|
|
1495
|
-
const columns =
|
|
1556
|
+
const columns = visibleColumns(table);
|
|
1496
1557
|
const columnEntries = Object.entries(columns);
|
|
1497
1558
|
const remapped = Object.fromEntries(
|
|
1498
1559
|
columnEntries.map(([columnName, column]) => [
|
|
@@ -1513,7 +1574,7 @@ var generateTableSelectTypeFieldsCached = (table, tableName, cacheCtx) => {
|
|
|
1513
1574
|
if (cacheCtx.selectFieldCache.has(table)) {
|
|
1514
1575
|
return cacheCtx.selectFieldCache.get(table);
|
|
1515
1576
|
}
|
|
1516
|
-
const columns =
|
|
1577
|
+
const columns = visibleColumns(table);
|
|
1517
1578
|
const columnEntries = Object.entries(columns);
|
|
1518
1579
|
const remapped = Object.fromEntries(
|
|
1519
1580
|
columnEntries.map(([columnName, column]) => [
|
|
@@ -1801,7 +1862,11 @@ var generateSelectFields = (tables, tableName, relationMap, fromTableName, fromR
|
|
|
1801
1862
|
},
|
|
1802
1863
|
resolve,
|
|
1803
1864
|
...relationDocs,
|
|
1804
|
-
...cacheCtx.complexity ? {
|
|
1865
|
+
...cacheCtx.complexity ? {
|
|
1866
|
+
extensions: {
|
|
1867
|
+
complexity: listFieldComplexity(cacheCtx.complexity, cacheCtx.limits?.(targetTableName))
|
|
1868
|
+
}
|
|
1869
|
+
} : {}
|
|
1805
1870
|
}
|
|
1806
1871
|
]);
|
|
1807
1872
|
const aggregateFieldName = `${relationName}Aggregate`;
|
|
@@ -1867,7 +1932,7 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
|
|
|
1867
1932
|
relationAggregateFactory
|
|
1868
1933
|
);
|
|
1869
1934
|
const table = tables[tableName];
|
|
1870
|
-
const columns =
|
|
1935
|
+
const columns = visibleColumns(table);
|
|
1871
1936
|
const columnEntries = Object.entries(columns);
|
|
1872
1937
|
const relaxedColumns = nestedWrites?.relaxedColumns(tableName);
|
|
1873
1938
|
const insertFields = Object.fromEntries(
|
|
@@ -2280,7 +2345,7 @@ var extractFilters = (table, tableName, filters, relationCtx) => {
|
|
|
2280
2345
|
}
|
|
2281
2346
|
return variants.length ? variants.length > 1 ? and(...variants) : variants[0] : void 0;
|
|
2282
2347
|
};
|
|
2283
|
-
var extractRelationsParamsInner = (relationMap, tables, tableName, typeName, originField, typeNameMapper, _isInitial = false, filterCtx) => {
|
|
2348
|
+
var extractRelationsParamsInner = (relationMap, tables, tableName, typeName, originField, typeNameMapper, _isInitial = false, filterCtx, limits) => {
|
|
2284
2349
|
const relationsForTable = relationMap[tableName];
|
|
2285
2350
|
if (!relationsForTable) {
|
|
2286
2351
|
return void 0;
|
|
@@ -2324,7 +2389,7 @@ var extractRelationsParamsInner = (relationMap, tables, tableName, typeName, ori
|
|
|
2324
2389
|
const relationField = Object.values(baseField).find((e) => e.name === relName);
|
|
2325
2390
|
const relationArgs = relationField?.args;
|
|
2326
2391
|
const offset = relationArgs?.offset ?? void 0;
|
|
2327
|
-
const limit = relationArgs?.limit ?? void 0;
|
|
2392
|
+
const limit = is3(relEntry.relation, One2) ? relationArgs?.limit ?? void 0 : applyLimitPolicy(relationArgs?.limit, limits?.(targetTableName), `${tableName}.${relName}`);
|
|
2328
2393
|
const relWhere = relationArgs?.where;
|
|
2329
2394
|
thisRecord.where = relWhere ? {
|
|
2330
2395
|
RAW: (aliasedTable2) => extractFilters(aliasedTable2, relName, relWhere, relationFilterCtx(filterCtx, targetTableName))
|
|
@@ -2342,18 +2407,29 @@ var extractRelationsParamsInner = (relationMap, tables, tableName, typeName, ori
|
|
|
2342
2407
|
relationField,
|
|
2343
2408
|
typeNameMapper,
|
|
2344
2409
|
false,
|
|
2345
|
-
filterCtx
|
|
2410
|
+
filterCtx,
|
|
2411
|
+
limits
|
|
2346
2412
|
) : void 0;
|
|
2347
2413
|
thisRecord.with = relWith;
|
|
2348
2414
|
args[relName] = thisRecord;
|
|
2349
2415
|
}
|
|
2350
2416
|
return args;
|
|
2351
2417
|
};
|
|
2352
|
-
var extractRelationsParams = (relationMap, tables, tableName, info, typeName, typeNameMapper, filterCtx) => {
|
|
2418
|
+
var extractRelationsParams = (relationMap, tables, tableName, info, typeName, typeNameMapper, filterCtx, limits) => {
|
|
2353
2419
|
if (!info) {
|
|
2354
2420
|
return void 0;
|
|
2355
2421
|
}
|
|
2356
|
-
return extractRelationsParamsInner(
|
|
2422
|
+
return extractRelationsParamsInner(
|
|
2423
|
+
relationMap,
|
|
2424
|
+
tables,
|
|
2425
|
+
tableName,
|
|
2426
|
+
typeName,
|
|
2427
|
+
info,
|
|
2428
|
+
typeNameMapper,
|
|
2429
|
+
true,
|
|
2430
|
+
filterCtx,
|
|
2431
|
+
limits
|
|
2432
|
+
);
|
|
2357
2433
|
};
|
|
2358
2434
|
var pruneNonEagerRelations = (relationMap, shouldEagerLoad) => {
|
|
2359
2435
|
const out = {};
|
|
@@ -2531,7 +2607,7 @@ var attachRowCursors = (rows, entries) => {
|
|
|
2531
2607
|
};
|
|
2532
2608
|
var rowCursorResolver = (source) => source?.[ROW_CURSOR_PROP] ?? null;
|
|
2533
2609
|
var getUniqueColumnSets = (table, getTableConfig4) => {
|
|
2534
|
-
const cols =
|
|
2610
|
+
const cols = visibleColumns(table);
|
|
2535
2611
|
const propNameByColumnName = new Map(Object.entries(cols).map(([propName, col]) => [col.name, propName]));
|
|
2536
2612
|
const toPropNames = (columnNames) => {
|
|
2537
2613
|
const propNames = [];
|
|
@@ -2571,12 +2647,13 @@ var getUniqueColumnSets = (table, getTableConfig4) => {
|
|
|
2571
2647
|
var DISTINCT_RN = "__drizzle_graphql_distinct_rn";
|
|
2572
2648
|
var columnEnumCache = /* @__PURE__ */ new WeakMap();
|
|
2573
2649
|
var generateColumnEnum = (table, enumName, description, predicate = () => true) => {
|
|
2650
|
+
const cacheKey = `${enumName}\0${excludedColumnsKey(table)}`;
|
|
2574
2651
|
let tableCache = columnEnumCache.get(table);
|
|
2575
|
-
const cached = tableCache?.get(
|
|
2652
|
+
const cached = tableCache?.get(cacheKey);
|
|
2576
2653
|
if (cached) {
|
|
2577
2654
|
return cached;
|
|
2578
2655
|
}
|
|
2579
|
-
const columnNames = Object.entries(
|
|
2656
|
+
const columnNames = Object.entries(visibleColumns(table)).filter(([columnName, column]) => predicate(column, columnName)).map(([columnName]) => columnName);
|
|
2580
2657
|
if (!columnNames.length) {
|
|
2581
2658
|
return void 0;
|
|
2582
2659
|
}
|
|
@@ -2589,7 +2666,7 @@ var generateColumnEnum = (table, enumName, description, predicate = () => true)
|
|
|
2589
2666
|
tableCache = /* @__PURE__ */ new Map();
|
|
2590
2667
|
columnEnumCache.set(table, tableCache);
|
|
2591
2668
|
}
|
|
2592
|
-
tableCache.set(
|
|
2669
|
+
tableCache.set(cacheKey, enumType);
|
|
2593
2670
|
return enumType;
|
|
2594
2671
|
};
|
|
2595
2672
|
var generateDistinctEnum = (table, typeName) => generateColumnEnum(table, `${typeName}DistinctColumn`, `Columns of ${typeName} that a query can be made distinct on`);
|
|
@@ -2744,7 +2821,16 @@ var primaryKeyRestriction = (table, pkNames, keys) => {
|
|
|
2744
2821
|
};
|
|
2745
2822
|
var prepareMutationRelationColumns = (params) => {
|
|
2746
2823
|
const { relationMap, tables, tableName, typeName, typeNameMapper, table, pkNames, parsedInfo } = params;
|
|
2747
|
-
const withParams = relationMap[tableName] ? extractRelationsParams(
|
|
2824
|
+
const withParams = relationMap[tableName] ? extractRelationsParams(
|
|
2825
|
+
relationMap,
|
|
2826
|
+
tables,
|
|
2827
|
+
tableName,
|
|
2828
|
+
parsedInfo,
|
|
2829
|
+
typeName,
|
|
2830
|
+
typeNameMapper,
|
|
2831
|
+
void 0,
|
|
2832
|
+
params.limits
|
|
2833
|
+
) : void 0;
|
|
2748
2834
|
const hasRelations = !!(withParams && Object.keys(withParams).length);
|
|
2749
2835
|
const baseColumns = extractSelectedColumnsFromTreeSQLFormat(parsedInfo.fieldsByTypeName[typeName], table, {
|
|
2750
2836
|
tableName,
|
|
@@ -3048,7 +3134,16 @@ var runRelationalSelect = async (opts) => {
|
|
|
3048
3134
|
) : void 0
|
|
3049
3135
|
)
|
|
3050
3136
|
} : void 0,
|
|
3051
|
-
with: relationMap[tableName] ? extractRelationsParams(
|
|
3137
|
+
with: relationMap[tableName] ? extractRelationsParams(
|
|
3138
|
+
relationMap,
|
|
3139
|
+
tables,
|
|
3140
|
+
tableName,
|
|
3141
|
+
parsedInfo,
|
|
3142
|
+
typeName,
|
|
3143
|
+
typeNameMapper,
|
|
3144
|
+
filterCtx,
|
|
3145
|
+
opts.limits
|
|
3146
|
+
) : void 0
|
|
3052
3147
|
};
|
|
3053
3148
|
if (single) {
|
|
3054
3149
|
const result2 = await queryBase.findFirst(params);
|
|
@@ -3191,7 +3286,7 @@ var classifyAggregateColumns = (table, tableName) => {
|
|
|
3191
3286
|
const numeric = {};
|
|
3192
3287
|
const orderable = {};
|
|
3193
3288
|
const all = {};
|
|
3194
|
-
for (const [columnName, column] of Object.entries(
|
|
3289
|
+
for (const [columnName, column] of Object.entries(visibleColumns(table))) {
|
|
3195
3290
|
all[columnName] = column;
|
|
3196
3291
|
const converted = drizzleColumnToGraphQLType(column, columnName, tableName, true, false, false);
|
|
3197
3292
|
const gqlType = converted.type;
|
|
@@ -3435,7 +3530,7 @@ var HAVING_OPS = { eq: eq2, ne: ne2, gt: gt2, gte: gte2, lt: lt2, lte: lte2 };
|
|
|
3435
3530
|
var groupableColumns = (table, tableName) => {
|
|
3436
3531
|
const { orderable } = classifyAggregateColumns(table, tableName);
|
|
3437
3532
|
const groupable = { ...orderable };
|
|
3438
|
-
for (const [columnName, column] of Object.entries(
|
|
3533
|
+
for (const [columnName, column] of Object.entries(visibleColumns(table))) {
|
|
3439
3534
|
if (groupable[columnName]) {
|
|
3440
3535
|
continue;
|
|
3441
3536
|
}
|
|
@@ -3610,7 +3705,7 @@ var generateGroupBy = (db, tableName, table, typeName, fieldName, filterArgs, gr
|
|
|
3610
3705
|
};
|
|
3611
3706
|
|
|
3612
3707
|
// src/util/builders/mysql.ts
|
|
3613
|
-
var generateSelectArray = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true) => {
|
|
3708
|
+
var generateSelectArray = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true, limits) => {
|
|
3614
3709
|
const queryBase = db.query[tableName];
|
|
3615
3710
|
if (!queryBase) {
|
|
3616
3711
|
throw new Error(
|
|
@@ -3618,6 +3713,7 @@ var generateSelectArray = (db, tableName, tables, relationMap, orderArgs, filter
|
|
|
3618
3713
|
);
|
|
3619
3714
|
}
|
|
3620
3715
|
const table = tables[tableName];
|
|
3716
|
+
const limitPolicy = limits?.(tableName);
|
|
3621
3717
|
const pkNames = mysqlPrimaryKeyPropNames(table);
|
|
3622
3718
|
const queryArgs = selectArrayArgs(
|
|
3623
3719
|
orderArgs,
|
|
@@ -3640,8 +3736,10 @@ var generateSelectArray = (db, tableName, tables, relationMap, orderArgs, filter
|
|
|
3640
3736
|
typeNameMapper,
|
|
3641
3737
|
parsedInfo,
|
|
3642
3738
|
...args,
|
|
3739
|
+
limit: applyLimitPolicy(args.limit, limitPolicy, fieldName),
|
|
3643
3740
|
single: false,
|
|
3644
3741
|
filterCtx,
|
|
3742
|
+
limits,
|
|
3645
3743
|
pkNames,
|
|
3646
3744
|
db: executor,
|
|
3647
3745
|
// MySQL sorts NULLs as the smallest values (first in ASC).
|
|
@@ -3654,7 +3752,7 @@ var generateSelectArray = (db, tableName, tables, relationMap, orderArgs, filter
|
|
|
3654
3752
|
args: queryArgs
|
|
3655
3753
|
};
|
|
3656
3754
|
};
|
|
3657
|
-
var generateSelectSingle = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx) => {
|
|
3755
|
+
var generateSelectSingle = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, limits) => {
|
|
3658
3756
|
const queryBase = db.query[tableName];
|
|
3659
3757
|
if (!queryBase) {
|
|
3660
3758
|
throw new Error(
|
|
@@ -3682,6 +3780,7 @@ var generateSelectSingle = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
3682
3780
|
...args,
|
|
3683
3781
|
single: true,
|
|
3684
3782
|
filterCtx,
|
|
3783
|
+
limits,
|
|
3685
3784
|
pkNames,
|
|
3686
3785
|
db: executor
|
|
3687
3786
|
});
|
|
@@ -3896,10 +3995,11 @@ var generateDelete = (db, tableName, table, filterArgs, fieldName, single, requi
|
|
|
3896
3995
|
};
|
|
3897
3996
|
var mysqlPrimaryKeyPropNames = (table) => getPrimaryKeyPropNamesFromConfig(table, getTableConfig);
|
|
3898
3997
|
var generateSchemaData = (db, schema, relations, options) => {
|
|
3899
|
-
const { relationsDepthLimit, prefixes, suffixes, typeNameMapper, shouldEagerLoad, features, complexity } = options;
|
|
3998
|
+
const { relationsDepthLimit, prefixes, suffixes, typeNameMapper, shouldEagerLoad, features, complexity, limits } = options;
|
|
3900
3999
|
const rawSchema = schema;
|
|
3901
4000
|
const schemaEntries = Object.entries(rawSchema);
|
|
3902
|
-
const
|
|
4001
|
+
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
4002
|
+
const tableEntries = schemaEntries.filter(([key, value]) => is4(value, MySqlTable) && !excludedTables.has(key));
|
|
3903
4003
|
const tables = Object.fromEntries(tableEntries);
|
|
3904
4004
|
if (!tableEntries.length) {
|
|
3905
4005
|
throw new Error(
|
|
@@ -3913,7 +4013,11 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
3913
4013
|
}
|
|
3914
4014
|
registerScalarOverrides(tables, options);
|
|
3915
4015
|
registerEnumConfig(options);
|
|
4016
|
+
registerColumnExclusions(tables, options.exclude);
|
|
3916
4017
|
const namedRelations = buildNamedRelations(relations ?? {}, tableEntries);
|
|
4018
|
+
for (const excluded of excludedTables) {
|
|
4019
|
+
delete namedRelations[excluded];
|
|
4020
|
+
}
|
|
3917
4021
|
attachTargetPrimaryKeys(namedRelations, tables, mysqlPrimaryKeyPropNames);
|
|
3918
4022
|
const eagerRelations = pruneNonEagerRelations(namedRelations, shouldEagerLoad);
|
|
3919
4023
|
const filterCtx = { tables, relationMap: namedRelations };
|
|
@@ -3921,7 +4025,8 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
3921
4025
|
db,
|
|
3922
4026
|
tables,
|
|
3923
4027
|
"nulls-smallest",
|
|
3924
|
-
filterCtx
|
|
4028
|
+
filterCtx,
|
|
4029
|
+
limits
|
|
3925
4030
|
);
|
|
3926
4031
|
const cacheCtx = {
|
|
3927
4032
|
genericFilterCache: /* @__PURE__ */ new Map(),
|
|
@@ -3936,6 +4041,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
3936
4041
|
listRelationFilterCache: /* @__PURE__ */ new Map(),
|
|
3937
4042
|
aggregateTypeCache: /* @__PURE__ */ new Map(),
|
|
3938
4043
|
complexity,
|
|
4044
|
+
limits,
|
|
3939
4045
|
docs: options.docs ?? {},
|
|
3940
4046
|
features
|
|
3941
4047
|
};
|
|
@@ -4006,7 +4112,8 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4006
4112
|
typeName,
|
|
4007
4113
|
typeNameMapper,
|
|
4008
4114
|
filterCtx,
|
|
4009
|
-
features.distinct
|
|
4115
|
+
features.distinct,
|
|
4116
|
+
limits
|
|
4010
4117
|
);
|
|
4011
4118
|
const selectSingleGenerated = generateSelectSingle(
|
|
4012
4119
|
db,
|
|
@@ -4018,7 +4125,8 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4018
4125
|
singleFieldName,
|
|
4019
4126
|
typeName,
|
|
4020
4127
|
typeNameMapper,
|
|
4021
|
-
filterCtx
|
|
4128
|
+
filterCtx,
|
|
4129
|
+
limits
|
|
4022
4130
|
);
|
|
4023
4131
|
const insertArrGenerated = features.insert ? generateInsertArray(
|
|
4024
4132
|
db,
|
|
@@ -4168,7 +4276,7 @@ var generateSchemaData = (db, schema, relations, options) => {
|
|
|
4168
4276
|
type: selectArrOutput,
|
|
4169
4277
|
args: selectArrGenerated.args,
|
|
4170
4278
|
resolve: selectArrGenerated.resolver,
|
|
4171
|
-
...complexity ? { extensions: { complexity: listFieldComplexity(complexity) } } : {}
|
|
4279
|
+
...complexity ? { extensions: { complexity: listFieldComplexity(complexity, limits?.(tableName)) } } : {}
|
|
4172
4280
|
};
|
|
4173
4281
|
queries[selectSingleGenerated.name] = {
|
|
4174
4282
|
type: selectSingleOutput,
|
|
@@ -4388,7 +4496,7 @@ var createNestedWriteTypes = (params) => {
|
|
|
4388
4496
|
}
|
|
4389
4497
|
const omitted = plan.fkSide === "child" ? plan.foreignColPropName : void 0;
|
|
4390
4498
|
const fields = Object.fromEntries(
|
|
4391
|
-
Object.entries(
|
|
4499
|
+
Object.entries(visibleColumns(plan.targetTable)).filter(([columnName]) => columnName !== omitted).map(([columnName, column]) => [
|
|
4392
4500
|
columnName,
|
|
4393
4501
|
drizzleColumnToGraphQLType(column, columnName, plan.targetTableName, false, true, true)
|
|
4394
4502
|
])
|
|
@@ -4664,9 +4772,10 @@ var updateWithNestedOps = async (params) => {
|
|
|
4664
4772
|
};
|
|
4665
4773
|
|
|
4666
4774
|
// src/util/builders/pg.ts
|
|
4667
|
-
var generateSelectArray2 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true) => {
|
|
4775
|
+
var generateSelectArray2 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true, limits) => {
|
|
4668
4776
|
const queryBase = db.query[tableName];
|
|
4669
4777
|
const table = tables[tableName];
|
|
4778
|
+
const limitPolicy = limits?.(tableName);
|
|
4670
4779
|
const pkNames = pgPrimaryKeyPropNames(table);
|
|
4671
4780
|
const queryArgs = selectArrayArgs(
|
|
4672
4781
|
orderArgs,
|
|
@@ -4679,6 +4788,7 @@ var generateSelectArray2 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
4679
4788
|
try {
|
|
4680
4789
|
const parsedInfo = parseResolveInfo3(info, { deep: true });
|
|
4681
4790
|
const { executor, queryBase: requestQueryBase } = resolveQueryExecutor(db, context, tableName, queryBase);
|
|
4791
|
+
const limit = applyLimitPolicy(args.limit, limitPolicy, fieldName);
|
|
4682
4792
|
if (requestQueryBase) {
|
|
4683
4793
|
return await runRelationalSelect({
|
|
4684
4794
|
queryBase: requestQueryBase,
|
|
@@ -4690,15 +4800,17 @@ var generateSelectArray2 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
4690
4800
|
typeNameMapper,
|
|
4691
4801
|
parsedInfo,
|
|
4692
4802
|
...args,
|
|
4803
|
+
limit,
|
|
4693
4804
|
single: false,
|
|
4694
4805
|
filterCtx,
|
|
4806
|
+
limits,
|
|
4695
4807
|
pkNames,
|
|
4696
4808
|
db: executor,
|
|
4697
4809
|
// PostgreSQL sorts NULLs as the largest values (last in ASC).
|
|
4698
4810
|
nullOrdering: "nulls-largest"
|
|
4699
4811
|
});
|
|
4700
4812
|
}
|
|
4701
|
-
const { offset,
|
|
4813
|
+
const { offset, orderBy, where, distinct, after } = args;
|
|
4702
4814
|
const selectedColumnsSql = extractSelectedColumnsFromTreeSQLFormat(
|
|
4703
4815
|
parsedInfo.fieldsByTypeName[typeName],
|
|
4704
4816
|
table,
|
|
@@ -4788,7 +4900,7 @@ var generateSelectArray2 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
4788
4900
|
args: queryArgs
|
|
4789
4901
|
};
|
|
4790
4902
|
};
|
|
4791
|
-
var generateSelectSingle2 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx) => {
|
|
4903
|
+
var generateSelectSingle2 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, limits) => {
|
|
4792
4904
|
const queryBase = db.query[tableName];
|
|
4793
4905
|
const queryArgs = selectSingleArgs(orderArgs, filterArgs);
|
|
4794
4906
|
const table = tables[tableName];
|
|
@@ -4812,6 +4924,7 @@ var generateSelectSingle2 = (db, tableName, tables, relationMap, orderArgs, filt
|
|
|
4812
4924
|
...args,
|
|
4813
4925
|
single: true,
|
|
4814
4926
|
filterCtx,
|
|
4927
|
+
limits,
|
|
4815
4928
|
pkNames,
|
|
4816
4929
|
db: executor
|
|
4817
4930
|
});
|
|
@@ -4845,7 +4958,7 @@ var generateSelectSingle2 = (db, tableName, tables, relationMap, orderArgs, filt
|
|
|
4845
4958
|
};
|
|
4846
4959
|
};
|
|
4847
4960
|
var pgPrimaryKeyPropNames = (table) => getPrimaryKeyPropNamesFromConfig(table, getTableConfig2);
|
|
4848
|
-
var generateInsertArray2 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested) => {
|
|
4961
|
+
var generateInsertArray2 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested, limits) => {
|
|
4849
4962
|
const queryArgs = {
|
|
4850
4963
|
values: {
|
|
4851
4964
|
type: new GraphQLNonNull7(new GraphQLList7(new GraphQLNonNull7(baseType)))
|
|
@@ -4874,7 +4987,8 @@ var generateInsertArray2 = (db, tableName, table, tables, relationMap, baseType,
|
|
|
4874
4987
|
typeNameMapper,
|
|
4875
4988
|
table,
|
|
4876
4989
|
pkNames,
|
|
4877
|
-
parsedInfo
|
|
4990
|
+
parsedInfo,
|
|
4991
|
+
limits
|
|
4878
4992
|
});
|
|
4879
4993
|
const returning = nestedEntries ? nested.withJoinColumns(tableName, mergedOps(nestedEntries), { ...columns }, table) : columns;
|
|
4880
4994
|
const runInsert = async (target, values) => {
|
|
@@ -4902,7 +5016,7 @@ var generateInsertArray2 = (db, tableName, table, tables, relationMap, baseType,
|
|
|
4902
5016
|
args: queryArgs
|
|
4903
5017
|
};
|
|
4904
5018
|
};
|
|
4905
|
-
var generateInsertSingle2 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested) => {
|
|
5019
|
+
var generateInsertSingle2 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested, limits) => {
|
|
4906
5020
|
const queryArgs = {
|
|
4907
5021
|
values: {
|
|
4908
5022
|
type: new GraphQLNonNull7(baseType)
|
|
@@ -4928,7 +5042,8 @@ var generateInsertSingle2 = (db, tableName, table, tables, relationMap, baseType
|
|
|
4928
5042
|
typeNameMapper,
|
|
4929
5043
|
table,
|
|
4930
5044
|
pkNames,
|
|
4931
|
-
parsedInfo
|
|
5045
|
+
parsedInfo,
|
|
5046
|
+
limits
|
|
4932
5047
|
});
|
|
4933
5048
|
const returning = nestedEntry ? nested.withJoinColumns(tableName, nestedEntry.ops, { ...columns }, table) : columns;
|
|
4934
5049
|
const runInsert = async (target, values) => {
|
|
@@ -4962,7 +5077,7 @@ var generateInsertSingle2 = (db, tableName, table, tables, relationMap, baseType
|
|
|
4962
5077
|
args: queryArgs
|
|
4963
5078
|
};
|
|
4964
5079
|
};
|
|
4965
|
-
var generateUpsert2 = (db, tableName, table, tables, relationMap, baseType, onConflictType, uniqueSets, fieldName, typeName, single, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
5080
|
+
var generateUpsert2 = (db, tableName, table, tables, relationMap, baseType, onConflictType, uniqueSets, fieldName, typeName, single, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
4966
5081
|
const queryArgs = {
|
|
4967
5082
|
values: {
|
|
4968
5083
|
type: single ? new GraphQLNonNull7(baseType) : new GraphQLNonNull7(new GraphQLList7(new GraphQLNonNull7(baseType)))
|
|
@@ -4994,7 +5109,8 @@ var generateUpsert2 = (db, tableName, table, tables, relationMap, baseType, onCo
|
|
|
4994
5109
|
typeNameMapper,
|
|
4995
5110
|
table,
|
|
4996
5111
|
pkNames,
|
|
4997
|
-
parsedInfo
|
|
5112
|
+
parsedInfo,
|
|
5113
|
+
limits
|
|
4998
5114
|
});
|
|
4999
5115
|
const returning = nestedEntries ? nested.withJoinColumns(tableName, mergedOps(nestedEntries), { ...columns }, table) : columns;
|
|
5000
5116
|
const runUpsert = async (target, values) => {
|
|
@@ -5033,7 +5149,7 @@ var generateUpsert2 = (db, tableName, table, tables, relationMap, baseType, onCo
|
|
|
5033
5149
|
args: queryArgs
|
|
5034
5150
|
};
|
|
5035
5151
|
};
|
|
5036
|
-
var generateUpdate2 = (db, tableName, table, tables, relationMap, setArgs, filterArgs, fieldName, typeName, single, requireWhere, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
5152
|
+
var generateUpdate2 = (db, tableName, table, tables, relationMap, setArgs, filterArgs, fieldName, typeName, single, requireWhere, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
5037
5153
|
const queryArgs = {
|
|
5038
5154
|
set: {
|
|
5039
5155
|
type: new GraphQLNonNull7(setArgs)
|
|
@@ -5060,7 +5176,8 @@ var generateUpdate2 = (db, tableName, table, tables, relationMap, setArgs, filte
|
|
|
5060
5176
|
typeNameMapper,
|
|
5061
5177
|
table,
|
|
5062
5178
|
pkNames,
|
|
5063
|
-
parsedInfo
|
|
5179
|
+
parsedInfo,
|
|
5180
|
+
limits
|
|
5064
5181
|
});
|
|
5065
5182
|
const entry = nested?.enabled(tableName) ? nested.split(tableName, set) : void 0;
|
|
5066
5183
|
const nestedOps = entry && nested.hasOps(entry.ops) ? entry.ops : void 0;
|
|
@@ -5107,7 +5224,7 @@ var generateUpdate2 = (db, tableName, table, tables, relationMap, setArgs, filte
|
|
|
5107
5224
|
args: queryArgs
|
|
5108
5225
|
};
|
|
5109
5226
|
};
|
|
5110
|
-
var generateUpdateMany2 = (db, tableName, table, tables, relationMap, updateManyInput, fieldName, typeName, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
5227
|
+
var generateUpdateMany2 = (db, tableName, table, tables, relationMap, updateManyInput, fieldName, typeName, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
5111
5228
|
const queryArgs = {
|
|
5112
5229
|
updates: {
|
|
5113
5230
|
type: new GraphQLNonNull7(new GraphQLList7(new GraphQLNonNull7(updateManyInput)))
|
|
@@ -5134,7 +5251,8 @@ var generateUpdateMany2 = (db, tableName, table, tables, relationMap, updateMany
|
|
|
5134
5251
|
typeNameMapper,
|
|
5135
5252
|
table,
|
|
5136
5253
|
pkNames,
|
|
5137
|
-
parsedInfo
|
|
5254
|
+
parsedInfo,
|
|
5255
|
+
limits
|
|
5138
5256
|
});
|
|
5139
5257
|
const entries = updates.map(({ where, set }) => {
|
|
5140
5258
|
const split = nested?.enabled(tableName) ? nested.split(tableName, set) : void 0;
|
|
@@ -5252,10 +5370,12 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5252
5370
|
typeNameMapper,
|
|
5253
5371
|
shouldEagerLoad,
|
|
5254
5372
|
features,
|
|
5255
|
-
complexity
|
|
5373
|
+
complexity,
|
|
5374
|
+
limits
|
|
5256
5375
|
} = options;
|
|
5257
5376
|
const schemaEntries = Object.entries(schema);
|
|
5258
|
-
const
|
|
5377
|
+
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
5378
|
+
const tableEntries = schemaEntries.filter(([key, value]) => is6(value, PgTable) && !excludedTables.has(key));
|
|
5259
5379
|
const tables = Object.fromEntries(tableEntries);
|
|
5260
5380
|
if (!tableEntries.length) {
|
|
5261
5381
|
throw new Error(
|
|
@@ -5264,7 +5384,11 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5264
5384
|
}
|
|
5265
5385
|
registerScalarOverrides(tables, options);
|
|
5266
5386
|
registerEnumConfig(options);
|
|
5387
|
+
registerColumnExclusions(tables, options.exclude);
|
|
5267
5388
|
const namedRelations = buildNamedRelations(relations ?? {}, tableEntries);
|
|
5389
|
+
for (const excluded of excludedTables) {
|
|
5390
|
+
delete namedRelations[excluded];
|
|
5391
|
+
}
|
|
5268
5392
|
attachTargetPrimaryKeys(namedRelations, tables, pgPrimaryKeyPropNames);
|
|
5269
5393
|
const eagerRelations = pruneNonEagerRelations(namedRelations, shouldEagerLoad);
|
|
5270
5394
|
const filterCtx = { tables, relationMap: namedRelations };
|
|
@@ -5272,7 +5396,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5272
5396
|
db,
|
|
5273
5397
|
tables,
|
|
5274
5398
|
"nulls-largest",
|
|
5275
|
-
filterCtx
|
|
5399
|
+
filterCtx,
|
|
5400
|
+
limits
|
|
5276
5401
|
);
|
|
5277
5402
|
const cacheCtx = {
|
|
5278
5403
|
genericFilterCache: /* @__PURE__ */ new Map(),
|
|
@@ -5287,6 +5412,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5287
5412
|
listRelationFilterCache: /* @__PURE__ */ new Map(),
|
|
5288
5413
|
aggregateTypeCache: /* @__PURE__ */ new Map(),
|
|
5289
5414
|
complexity,
|
|
5415
|
+
limits,
|
|
5290
5416
|
docs: options.docs ?? {},
|
|
5291
5417
|
features
|
|
5292
5418
|
};
|
|
@@ -5356,7 +5482,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5356
5482
|
typeName,
|
|
5357
5483
|
typeNameMapper,
|
|
5358
5484
|
filterCtx,
|
|
5359
|
-
features.distinct
|
|
5485
|
+
features.distinct,
|
|
5486
|
+
limits
|
|
5360
5487
|
);
|
|
5361
5488
|
const selectSingleGenerated = generateSelectSingle2(
|
|
5362
5489
|
db,
|
|
@@ -5368,7 +5495,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5368
5495
|
singleFieldName,
|
|
5369
5496
|
typeName,
|
|
5370
5497
|
typeNameMapper,
|
|
5371
|
-
filterCtx
|
|
5498
|
+
filterCtx,
|
|
5499
|
+
limits
|
|
5372
5500
|
);
|
|
5373
5501
|
const insertArrGenerated = features.insert ? generateInsertArray2(
|
|
5374
5502
|
db,
|
|
@@ -5382,7 +5510,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5382
5510
|
typeNameMapper,
|
|
5383
5511
|
conflictDoNothing,
|
|
5384
5512
|
mutationTxCtx,
|
|
5385
|
-
nestedRuntime
|
|
5513
|
+
nestedRuntime,
|
|
5514
|
+
limits
|
|
5386
5515
|
) : void 0;
|
|
5387
5516
|
const insertSingleGenerated = features.insert ? generateInsertSingle2(
|
|
5388
5517
|
db,
|
|
@@ -5396,7 +5525,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5396
5525
|
typeNameMapper,
|
|
5397
5526
|
conflictDoNothing,
|
|
5398
5527
|
mutationTxCtx,
|
|
5399
|
-
nestedRuntime
|
|
5528
|
+
nestedRuntime,
|
|
5529
|
+
limits
|
|
5400
5530
|
) : void 0;
|
|
5401
5531
|
const uniqueSets = features.upsert ? getUniqueColumnSets(schema[tableName], getTableConfig2) : [];
|
|
5402
5532
|
const onConflictInput = features.upsert ? generateOnConflictInput({
|
|
@@ -5421,7 +5551,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5421
5551
|
typeNameMapper,
|
|
5422
5552
|
filterCtx,
|
|
5423
5553
|
mutationTxCtx,
|
|
5424
|
-
nestedRuntime
|
|
5554
|
+
nestedRuntime,
|
|
5555
|
+
limits
|
|
5425
5556
|
) : void 0;
|
|
5426
5557
|
const upsertSingleGenerated = onConflictInput ? generateUpsert2(
|
|
5427
5558
|
db,
|
|
@@ -5438,7 +5569,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5438
5569
|
typeNameMapper,
|
|
5439
5570
|
filterCtx,
|
|
5440
5571
|
mutationTxCtx,
|
|
5441
|
-
nestedRuntime
|
|
5572
|
+
nestedRuntime,
|
|
5573
|
+
limits
|
|
5442
5574
|
) : void 0;
|
|
5443
5575
|
const updateGenerated = features.update ? generateUpdate2(
|
|
5444
5576
|
db,
|
|
@@ -5455,7 +5587,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5455
5587
|
typeNameMapper,
|
|
5456
5588
|
filterCtx,
|
|
5457
5589
|
mutationTxCtx,
|
|
5458
|
-
nestedRuntime
|
|
5590
|
+
nestedRuntime,
|
|
5591
|
+
limits
|
|
5459
5592
|
) : void 0;
|
|
5460
5593
|
const updateSingleGenerated = features.update ? generateUpdate2(
|
|
5461
5594
|
db,
|
|
@@ -5472,7 +5605,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5472
5605
|
typeNameMapper,
|
|
5473
5606
|
filterCtx,
|
|
5474
5607
|
mutationTxCtx,
|
|
5475
|
-
nestedRuntime
|
|
5608
|
+
nestedRuntime,
|
|
5609
|
+
limits
|
|
5476
5610
|
) : void 0;
|
|
5477
5611
|
const updateManyInput = features.update && features.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
5478
5612
|
const updateManyGenerated = updateManyInput ? generateUpdateMany2(
|
|
@@ -5487,7 +5621,8 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5487
5621
|
typeNameMapper,
|
|
5488
5622
|
filterCtx,
|
|
5489
5623
|
mutationTxCtx,
|
|
5490
|
-
nestedRuntime
|
|
5624
|
+
nestedRuntime,
|
|
5625
|
+
limits
|
|
5491
5626
|
) : void 0;
|
|
5492
5627
|
const deleteGenerated = features.delete ? generateDelete2(
|
|
5493
5628
|
db,
|
|
@@ -5567,7 +5702,7 @@ function generateSchemaData2(db, schema, relations, options) {
|
|
|
5567
5702
|
type: selectArrOutput,
|
|
5568
5703
|
args: selectArrGenerated.args,
|
|
5569
5704
|
resolve: selectArrGenerated.resolver,
|
|
5570
|
-
...complexity ? { extensions: { complexity: listFieldComplexity(complexity) } } : {}
|
|
5705
|
+
...complexity ? { extensions: { complexity: listFieldComplexity(complexity, limits?.(tableName)) } } : {}
|
|
5571
5706
|
};
|
|
5572
5707
|
queries[selectSingleGenerated.name] = {
|
|
5573
5708
|
type: selectSingleOutput,
|
|
@@ -5729,7 +5864,7 @@ import {
|
|
|
5729
5864
|
GraphQLNonNull as GraphQLNonNull8
|
|
5730
5865
|
} from "graphql";
|
|
5731
5866
|
import { parseResolveInfo as parseResolveInfo4 } from "graphql-parse-resolve-info";
|
|
5732
|
-
var generateSelectArray3 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true) => {
|
|
5867
|
+
var generateSelectArray3 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, distinctEnabled = true, limits) => {
|
|
5733
5868
|
const queryBase = db.query[tableName];
|
|
5734
5869
|
if (!queryBase) {
|
|
5735
5870
|
throw new Error(
|
|
@@ -5737,6 +5872,7 @@ var generateSelectArray3 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
5737
5872
|
);
|
|
5738
5873
|
}
|
|
5739
5874
|
const table = tables[tableName];
|
|
5875
|
+
const limitPolicy = limits?.(tableName);
|
|
5740
5876
|
const pkNames = sqlitePrimaryKeyPropNames(table);
|
|
5741
5877
|
const queryArgs = selectArrayArgs(
|
|
5742
5878
|
orderArgs,
|
|
@@ -5759,8 +5895,10 @@ var generateSelectArray3 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
5759
5895
|
typeNameMapper,
|
|
5760
5896
|
parsedInfo,
|
|
5761
5897
|
...args,
|
|
5898
|
+
limit: applyLimitPolicy(args.limit, limitPolicy, fieldName),
|
|
5762
5899
|
single: false,
|
|
5763
5900
|
filterCtx,
|
|
5901
|
+
limits,
|
|
5764
5902
|
pkNames,
|
|
5765
5903
|
db: executor,
|
|
5766
5904
|
// SQLite sorts NULLs as the smallest values (first in ASC).
|
|
@@ -5773,7 +5911,7 @@ var generateSelectArray3 = (db, tableName, tables, relationMap, orderArgs, filte
|
|
|
5773
5911
|
args: queryArgs
|
|
5774
5912
|
};
|
|
5775
5913
|
};
|
|
5776
|
-
var generateSelectSingle3 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx) => {
|
|
5914
|
+
var generateSelectSingle3 = (db, tableName, tables, relationMap, orderArgs, filterArgs, fieldName, typeName, typeNameMapper, filterCtx, limits) => {
|
|
5777
5915
|
const queryBase = db.query[tableName];
|
|
5778
5916
|
if (!queryBase) {
|
|
5779
5917
|
throw new Error(
|
|
@@ -5801,6 +5939,7 @@ var generateSelectSingle3 = (db, tableName, tables, relationMap, orderArgs, filt
|
|
|
5801
5939
|
...args,
|
|
5802
5940
|
single: true,
|
|
5803
5941
|
filterCtx,
|
|
5942
|
+
limits,
|
|
5804
5943
|
pkNames,
|
|
5805
5944
|
db: executor
|
|
5806
5945
|
});
|
|
@@ -5812,7 +5951,7 @@ var generateSelectSingle3 = (db, tableName, tables, relationMap, orderArgs, filt
|
|
|
5812
5951
|
};
|
|
5813
5952
|
};
|
|
5814
5953
|
var sqlitePrimaryKeyPropNames = (table) => getPrimaryKeyPropNamesFromConfig(table, getTableConfig3);
|
|
5815
|
-
var generateInsertArray3 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested) => {
|
|
5954
|
+
var generateInsertArray3 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested, limits) => {
|
|
5816
5955
|
const queryArgs = {
|
|
5817
5956
|
values: {
|
|
5818
5957
|
type: new GraphQLNonNull8(new GraphQLList8(new GraphQLNonNull8(baseType)))
|
|
@@ -5841,7 +5980,8 @@ var generateInsertArray3 = (db, tableName, table, tables, relationMap, baseType,
|
|
|
5841
5980
|
typeNameMapper,
|
|
5842
5981
|
table,
|
|
5843
5982
|
pkNames,
|
|
5844
|
-
parsedInfo
|
|
5983
|
+
parsedInfo,
|
|
5984
|
+
limits
|
|
5845
5985
|
});
|
|
5846
5986
|
const returning = nestedEntries ? nested.withJoinColumns(tableName, mergedOps(nestedEntries), { ...columns }, table) : columns;
|
|
5847
5987
|
const runInsert = async (target, values) => {
|
|
@@ -5869,7 +6009,7 @@ var generateInsertArray3 = (db, tableName, table, tables, relationMap, baseType,
|
|
|
5869
6009
|
args: queryArgs
|
|
5870
6010
|
};
|
|
5871
6011
|
};
|
|
5872
|
-
var generateInsertSingle3 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested) => {
|
|
6012
|
+
var generateInsertSingle3 = (db, tableName, table, tables, relationMap, baseType, fieldName, typeName, typeNameMapper, conflictDoNothing = false, txCtx, nested, limits) => {
|
|
5873
6013
|
const queryArgs = {
|
|
5874
6014
|
values: {
|
|
5875
6015
|
type: new GraphQLNonNull8(baseType)
|
|
@@ -5895,7 +6035,8 @@ var generateInsertSingle3 = (db, tableName, table, tables, relationMap, baseType
|
|
|
5895
6035
|
typeNameMapper,
|
|
5896
6036
|
table,
|
|
5897
6037
|
pkNames,
|
|
5898
|
-
parsedInfo
|
|
6038
|
+
parsedInfo,
|
|
6039
|
+
limits
|
|
5899
6040
|
});
|
|
5900
6041
|
const returning = nestedEntry ? nested.withJoinColumns(tableName, nestedEntry.ops, { ...columns }, table) : columns;
|
|
5901
6042
|
const runInsert = async (target, values) => {
|
|
@@ -5929,7 +6070,7 @@ var generateInsertSingle3 = (db, tableName, table, tables, relationMap, baseType
|
|
|
5929
6070
|
args: queryArgs
|
|
5930
6071
|
};
|
|
5931
6072
|
};
|
|
5932
|
-
var generateUpsert3 = (db, tableName, table, tables, relationMap, baseType, onConflictType, uniqueSets, fieldName, typeName, single, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
6073
|
+
var generateUpsert3 = (db, tableName, table, tables, relationMap, baseType, onConflictType, uniqueSets, fieldName, typeName, single, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
5933
6074
|
const queryArgs = {
|
|
5934
6075
|
values: {
|
|
5935
6076
|
type: single ? new GraphQLNonNull8(baseType) : new GraphQLNonNull8(new GraphQLList8(new GraphQLNonNull8(baseType)))
|
|
@@ -5961,7 +6102,8 @@ var generateUpsert3 = (db, tableName, table, tables, relationMap, baseType, onCo
|
|
|
5961
6102
|
typeNameMapper,
|
|
5962
6103
|
table,
|
|
5963
6104
|
pkNames,
|
|
5964
|
-
parsedInfo
|
|
6105
|
+
parsedInfo,
|
|
6106
|
+
limits
|
|
5965
6107
|
});
|
|
5966
6108
|
const returning = nestedEntries ? nested.withJoinColumns(tableName, mergedOps(nestedEntries), { ...columns }, table) : columns;
|
|
5967
6109
|
const runUpsert = async (target, values) => {
|
|
@@ -6000,7 +6142,7 @@ var generateUpsert3 = (db, tableName, table, tables, relationMap, baseType, onCo
|
|
|
6000
6142
|
args: queryArgs
|
|
6001
6143
|
};
|
|
6002
6144
|
};
|
|
6003
|
-
var generateUpdate3 = (db, tableName, table, tables, relationMap, setArgs, filterArgs, fieldName, typeName, single, requireWhere, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
6145
|
+
var generateUpdate3 = (db, tableName, table, tables, relationMap, setArgs, filterArgs, fieldName, typeName, single, requireWhere, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
6004
6146
|
const queryArgs = {
|
|
6005
6147
|
set: {
|
|
6006
6148
|
type: new GraphQLNonNull8(setArgs)
|
|
@@ -6027,7 +6169,8 @@ var generateUpdate3 = (db, tableName, table, tables, relationMap, setArgs, filte
|
|
|
6027
6169
|
typeNameMapper,
|
|
6028
6170
|
table,
|
|
6029
6171
|
pkNames,
|
|
6030
|
-
parsedInfo
|
|
6172
|
+
parsedInfo,
|
|
6173
|
+
limits
|
|
6031
6174
|
});
|
|
6032
6175
|
const entry = nested?.enabled(tableName) ? nested.split(tableName, set) : void 0;
|
|
6033
6176
|
const nestedOps = entry && nested.hasOps(entry.ops) ? entry.ops : void 0;
|
|
@@ -6074,7 +6217,7 @@ var generateUpdate3 = (db, tableName, table, tables, relationMap, setArgs, filte
|
|
|
6074
6217
|
args: queryArgs
|
|
6075
6218
|
};
|
|
6076
6219
|
};
|
|
6077
|
-
var generateUpdateMany3 = (db, tableName, table, tables, relationMap, updateManyInput, fieldName, typeName, typeNameMapper, filterCtx, txCtx, nested) => {
|
|
6220
|
+
var generateUpdateMany3 = (db, tableName, table, tables, relationMap, updateManyInput, fieldName, typeName, typeNameMapper, filterCtx, txCtx, nested, limits) => {
|
|
6078
6221
|
const queryArgs = {
|
|
6079
6222
|
updates: {
|
|
6080
6223
|
type: new GraphQLNonNull8(new GraphQLList8(new GraphQLNonNull8(updateManyInput)))
|
|
@@ -6101,7 +6244,8 @@ var generateUpdateMany3 = (db, tableName, table, tables, relationMap, updateMany
|
|
|
6101
6244
|
typeNameMapper,
|
|
6102
6245
|
table,
|
|
6103
6246
|
pkNames,
|
|
6104
|
-
parsedInfo
|
|
6247
|
+
parsedInfo,
|
|
6248
|
+
limits
|
|
6105
6249
|
});
|
|
6106
6250
|
const entries = updates.map(({ where, set }) => {
|
|
6107
6251
|
const split = nested?.enabled(tableName) ? nested.split(tableName, set) : void 0;
|
|
@@ -6247,11 +6391,13 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6247
6391
|
typeNameMapper,
|
|
6248
6392
|
shouldEagerLoad,
|
|
6249
6393
|
features,
|
|
6250
|
-
complexity
|
|
6394
|
+
complexity,
|
|
6395
|
+
limits
|
|
6251
6396
|
} = options;
|
|
6252
6397
|
const rawSchema = schema;
|
|
6253
6398
|
const schemaEntries = Object.entries(rawSchema);
|
|
6254
|
-
const
|
|
6399
|
+
const excludedTables = new Set(options.exclude?.tables ?? []);
|
|
6400
|
+
const tableEntries = schemaEntries.filter(([key, value]) => is7(value, SQLiteTable) && !excludedTables.has(key));
|
|
6255
6401
|
const tables = Object.fromEntries(tableEntries);
|
|
6256
6402
|
if (!tableEntries.length) {
|
|
6257
6403
|
throw new Error(
|
|
@@ -6260,7 +6406,11 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6260
6406
|
}
|
|
6261
6407
|
registerScalarOverrides(tables, options);
|
|
6262
6408
|
registerEnumConfig(options);
|
|
6409
|
+
registerColumnExclusions(tables, options.exclude);
|
|
6263
6410
|
const namedRelations = buildNamedRelations(relations ?? {}, tableEntries);
|
|
6411
|
+
for (const excluded of excludedTables) {
|
|
6412
|
+
delete namedRelations[excluded];
|
|
6413
|
+
}
|
|
6264
6414
|
attachTargetPrimaryKeys(namedRelations, tables, sqlitePrimaryKeyPropNames);
|
|
6265
6415
|
const eagerRelations = pruneNonEagerRelations(namedRelations, shouldEagerLoad);
|
|
6266
6416
|
const filterCtx = { tables, relationMap: namedRelations };
|
|
@@ -6268,7 +6418,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6268
6418
|
db,
|
|
6269
6419
|
tables,
|
|
6270
6420
|
"nulls-smallest",
|
|
6271
|
-
filterCtx
|
|
6421
|
+
filterCtx,
|
|
6422
|
+
limits
|
|
6272
6423
|
);
|
|
6273
6424
|
const cacheCtx = {
|
|
6274
6425
|
genericFilterCache: /* @__PURE__ */ new Map(),
|
|
@@ -6283,6 +6434,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6283
6434
|
listRelationFilterCache: /* @__PURE__ */ new Map(),
|
|
6284
6435
|
aggregateTypeCache: /* @__PURE__ */ new Map(),
|
|
6285
6436
|
complexity,
|
|
6437
|
+
limits,
|
|
6286
6438
|
docs: options.docs ?? {},
|
|
6287
6439
|
features
|
|
6288
6440
|
};
|
|
@@ -6362,7 +6514,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6362
6514
|
typeName,
|
|
6363
6515
|
typeNameMapper,
|
|
6364
6516
|
filterCtx,
|
|
6365
|
-
features.distinct
|
|
6517
|
+
features.distinct,
|
|
6518
|
+
limits
|
|
6366
6519
|
);
|
|
6367
6520
|
const selectSingleGenerated = generateSelectSingle3(
|
|
6368
6521
|
db,
|
|
@@ -6374,7 +6527,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6374
6527
|
singleFieldName,
|
|
6375
6528
|
typeName,
|
|
6376
6529
|
typeNameMapper,
|
|
6377
|
-
filterCtx
|
|
6530
|
+
filterCtx,
|
|
6531
|
+
limits
|
|
6378
6532
|
);
|
|
6379
6533
|
const insertArrGenerated = features.insert ? generateInsertArray3(
|
|
6380
6534
|
db,
|
|
@@ -6388,7 +6542,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6388
6542
|
typeNameMapper,
|
|
6389
6543
|
conflictDoNothing,
|
|
6390
6544
|
mutationTxCtx,
|
|
6391
|
-
nestedRuntime
|
|
6545
|
+
nestedRuntime,
|
|
6546
|
+
limits
|
|
6392
6547
|
) : void 0;
|
|
6393
6548
|
const insertSingleGenerated = features.insert ? generateInsertSingle3(
|
|
6394
6549
|
db,
|
|
@@ -6402,7 +6557,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6402
6557
|
typeNameMapper,
|
|
6403
6558
|
conflictDoNothing,
|
|
6404
6559
|
mutationTxCtx,
|
|
6405
|
-
nestedRuntime
|
|
6560
|
+
nestedRuntime,
|
|
6561
|
+
limits
|
|
6406
6562
|
) : void 0;
|
|
6407
6563
|
const uniqueSets = features.upsert ? getUniqueColumnSets(schema[tableName], getTableConfig3) : [];
|
|
6408
6564
|
const onConflictInput = features.upsert ? generateOnConflictInput({
|
|
@@ -6427,7 +6583,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6427
6583
|
typeNameMapper,
|
|
6428
6584
|
filterCtx,
|
|
6429
6585
|
mutationTxCtx,
|
|
6430
|
-
nestedRuntime
|
|
6586
|
+
nestedRuntime,
|
|
6587
|
+
limits
|
|
6431
6588
|
) : void 0;
|
|
6432
6589
|
const upsertSingleGenerated = onConflictInput ? generateUpsert3(
|
|
6433
6590
|
db,
|
|
@@ -6444,7 +6601,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6444
6601
|
typeNameMapper,
|
|
6445
6602
|
filterCtx,
|
|
6446
6603
|
mutationTxCtx,
|
|
6447
|
-
nestedRuntime
|
|
6604
|
+
nestedRuntime,
|
|
6605
|
+
limits
|
|
6448
6606
|
) : void 0;
|
|
6449
6607
|
const updateGenerated = features.update ? generateUpdate3(
|
|
6450
6608
|
db,
|
|
@@ -6461,7 +6619,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6461
6619
|
typeNameMapper,
|
|
6462
6620
|
filterCtx,
|
|
6463
6621
|
mutationTxCtx,
|
|
6464
|
-
nestedRuntime
|
|
6622
|
+
nestedRuntime,
|
|
6623
|
+
limits
|
|
6465
6624
|
) : void 0;
|
|
6466
6625
|
const updateSingleGenerated = features.update ? generateUpdate3(
|
|
6467
6626
|
db,
|
|
@@ -6478,7 +6637,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6478
6637
|
typeNameMapper,
|
|
6479
6638
|
filterCtx,
|
|
6480
6639
|
mutationTxCtx,
|
|
6481
|
-
nestedRuntime
|
|
6640
|
+
nestedRuntime,
|
|
6641
|
+
limits
|
|
6482
6642
|
) : void 0;
|
|
6483
6643
|
const updateManyInput = features.update && features.updateMany ? generateUpdateManyInput({ typeName, updatePrefix: prefixes.update, updateInput, tableFilters }) : void 0;
|
|
6484
6644
|
const updateManyGenerated = updateManyInput ? generateUpdateMany3(
|
|
@@ -6493,7 +6653,8 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6493
6653
|
typeNameMapper,
|
|
6494
6654
|
filterCtx,
|
|
6495
6655
|
mutationTxCtx,
|
|
6496
|
-
nestedRuntime
|
|
6656
|
+
nestedRuntime,
|
|
6657
|
+
limits
|
|
6497
6658
|
) : void 0;
|
|
6498
6659
|
const deleteGenerated = features.delete ? generateDelete3(
|
|
6499
6660
|
db,
|
|
@@ -6573,7 +6734,7 @@ var generateSchemaData3 = (db, schema, relations, options) => {
|
|
|
6573
6734
|
type: selectArrOutput,
|
|
6574
6735
|
args: selectArrGenerated.args,
|
|
6575
6736
|
resolve: selectArrGenerated.resolver,
|
|
6576
|
-
...complexity ? { extensions: { complexity: listFieldComplexity(complexity) } } : {}
|
|
6737
|
+
...complexity ? { extensions: { complexity: listFieldComplexity(complexity, limits?.(tableName)) } } : {}
|
|
6577
6738
|
};
|
|
6578
6739
|
queries[selectSingleGenerated.name] = {
|
|
6579
6740
|
type: selectSingleOutput,
|
|
@@ -6769,6 +6930,76 @@ var buildSchema = (db, config) => {
|
|
|
6769
6930
|
};
|
|
6770
6931
|
const transactionsOpt = config?.transactions;
|
|
6771
6932
|
const transactions = transactionsOpt === void 0 || transactionsOpt === "none" ? void 0 : { timeoutMs: (transactionsOpt === "auto" ? void 0 : transactionsOpt.timeoutMs) ?? 3e4 };
|
|
6933
|
+
const limitsConfig = config?.limits;
|
|
6934
|
+
if (limitsConfig) {
|
|
6935
|
+
const check = (policy, where) => {
|
|
6936
|
+
for (const key of ["defaultLimit", "maxLimit"]) {
|
|
6937
|
+
const value = policy[key];
|
|
6938
|
+
if (value === void 0) {
|
|
6939
|
+
continue;
|
|
6940
|
+
}
|
|
6941
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
6942
|
+
throw new Error(`Drizzle-GraphQL Error: config.limits${where}.${key} must be a positive integer.`);
|
|
6943
|
+
}
|
|
6944
|
+
}
|
|
6945
|
+
};
|
|
6946
|
+
check(limitsConfig, "");
|
|
6947
|
+
for (const [tableName, policy] of Object.entries(limitsConfig.tables ?? {})) {
|
|
6948
|
+
check(policy, `.tables.${tableName}`);
|
|
6949
|
+
}
|
|
6950
|
+
}
|
|
6951
|
+
const limitPolicyCache = /* @__PURE__ */ new Map();
|
|
6952
|
+
const limits = limitsConfig ? (tableName) => {
|
|
6953
|
+
if (limitPolicyCache.has(tableName)) {
|
|
6954
|
+
return limitPolicyCache.get(tableName);
|
|
6955
|
+
}
|
|
6956
|
+
const resolved = resolveLimitPolicy(limitsConfig, limitsConfig.tables?.[tableName]);
|
|
6957
|
+
limitPolicyCache.set(tableName, resolved);
|
|
6958
|
+
return resolved;
|
|
6959
|
+
} : void 0;
|
|
6960
|
+
const exclude = config?.exclude;
|
|
6961
|
+
if (exclude) {
|
|
6962
|
+
const tableNames = new Set(
|
|
6963
|
+
Object.entries(schema).filter(([, value]) => is8(value, Table)).map(([key]) => key)
|
|
6964
|
+
);
|
|
6965
|
+
const excludedTables = new Set(exclude.tables ?? []);
|
|
6966
|
+
for (const tableName of excludedTables) {
|
|
6967
|
+
if (!tableNames.has(tableName)) {
|
|
6968
|
+
throw new Error(
|
|
6969
|
+
`Drizzle-GraphQL Error: config.exclude.tables names '${tableName}', which is not a table in the Drizzle schema.`
|
|
6970
|
+
);
|
|
6971
|
+
}
|
|
6972
|
+
}
|
|
6973
|
+
if (excludedTables.size >= tableNames.size) {
|
|
6974
|
+
throw new Error(
|
|
6975
|
+
"Drizzle-GraphQL Error: config.exclude.tables excludes every table in the schema, leaving nothing to generate."
|
|
6976
|
+
);
|
|
6977
|
+
}
|
|
6978
|
+
for (const [tableName, columnNames] of Object.entries(exclude.columns ?? {})) {
|
|
6979
|
+
if (!tableNames.has(tableName)) {
|
|
6980
|
+
throw new Error(
|
|
6981
|
+
`Drizzle-GraphQL Error: config.exclude.columns names table '${tableName}', which is not a table in the Drizzle schema.`
|
|
6982
|
+
);
|
|
6983
|
+
}
|
|
6984
|
+
if (excludedTables.has(tableName)) {
|
|
6985
|
+
continue;
|
|
6986
|
+
}
|
|
6987
|
+
const columns = getColumns6(schema[tableName]);
|
|
6988
|
+
for (const columnName of columnNames) {
|
|
6989
|
+
const column = columns[columnName];
|
|
6990
|
+
if (!column) {
|
|
6991
|
+
throw new Error(
|
|
6992
|
+
`Drizzle-GraphQL Error: config.exclude.columns names '${tableName}.${columnName}', which is not a column of that table.`
|
|
6993
|
+
);
|
|
6994
|
+
}
|
|
6995
|
+
if (column.notNull && !column.hasDefault && !column.defaultFn) {
|
|
6996
|
+
console.warn(
|
|
6997
|
+
`Drizzle-GraphQL Warning: excluded column '${tableName}.${columnName}' is NOT NULL with no default, so generated inserts for '${tableName}' can never succeed.`
|
|
6998
|
+
);
|
|
6999
|
+
}
|
|
7000
|
+
}
|
|
7001
|
+
}
|
|
7002
|
+
}
|
|
6772
7003
|
const eagerOpt = config?.eagerLoadRelations;
|
|
6773
7004
|
const shouldEagerLoad = eagerOpt === void 0 || eagerOpt === true ? () => true : eagerOpt === false ? () => false : eagerOpt;
|
|
6774
7005
|
if (!typeNameMapper && suffixes.list === suffixes.single) {
|
|
@@ -6801,6 +7032,8 @@ var buildSchema = (db, config) => {
|
|
|
6801
7032
|
mapColumnType: config?.mapColumnType,
|
|
6802
7033
|
enumNameMapper: config?.enumNameMapper,
|
|
6803
7034
|
transactions,
|
|
7035
|
+
limits,
|
|
7036
|
+
exclude,
|
|
6804
7037
|
docs: {
|
|
6805
7038
|
describeColumn: config?.describeColumn,
|
|
6806
7039
|
describeTable: config?.describeTable,
|