drizzle-graphql-plus 0.8.16 → 0.8.18

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/index.cjs CHANGED
@@ -2208,6 +2208,7 @@ var import_sqlite_core4 = require("drizzle-orm/sqlite-core");
2208
2208
  var allowedNameChars2 = /^[a-zA-Z0-9_]+$/;
2209
2209
  var customScalars = /* @__PURE__ */ new Set();
2210
2210
  var enumDefinitions = /* @__PURE__ */ new Map();
2211
+ var requiredFieldFilters = /* @__PURE__ */ new Set();
2211
2212
  var columnToSDL = (column, columnName, tableName, forceNullable = false) => {
2212
2213
  let baseType;
2213
2214
  if (column.customGraphqlType) {
@@ -2343,6 +2344,7 @@ var generateTypeDefs = (tables, relations) => {
2343
2344
  const typeDefs = [];
2344
2345
  customScalars.clear();
2345
2346
  enumDefinitions.clear();
2347
+ requiredFieldFilters.clear();
2346
2348
  for (const [tableName, tableInfo] of Object.entries(tables)) {
2347
2349
  const typeName = capitalize(tableName);
2348
2350
  const fields = [];
@@ -2414,6 +2416,7 @@ ${insertFields.join("\n")}
2414
2416
  ${updateFields.join("\n")}
2415
2417
  }`
2416
2418
  );
2419
+ const whereFields = [];
2417
2420
  for (const [columnName, column] of Object.entries(tableInfo.columns)) {
2418
2421
  const typeStr = columnToSDL(
2419
2422
  column,
@@ -2421,47 +2424,14 @@ ${updateFields.join("\n")}
2421
2424
  tableName,
2422
2425
  true
2423
2426
  );
2424
- const filterName = `${typeName}${capitalize(columnName)}Filters`;
2425
- const filterFields = [];
2426
- filterFields.push(` eq: ${typeStr}`);
2427
- filterFields.push(` ne: ${typeStr}`);
2428
- filterFields.push(` lt: ${typeStr}`);
2429
- filterFields.push(` lte: ${typeStr}`);
2430
- filterFields.push(` gt: ${typeStr}`);
2431
- filterFields.push(` gte: ${typeStr}`);
2432
- filterFields.push(` like: String`);
2433
- filterFields.push(` notLike: String`);
2434
- filterFields.push(` ilike: String`);
2435
- filterFields.push(` notIlike: String`);
2436
- filterFields.push(` inArray: [${typeStr}!]`);
2437
- filterFields.push(` notInArray: [${typeStr}!]`);
2438
- filterFields.push(` isNull: Boolean`);
2439
- filterFields.push(` isNotNull: Boolean`);
2440
- const orFilterName = `${typeName}${capitalize(columnName)}FiltersOr`;
2441
- typeDefs.push(`input ${orFilterName} {
2442
- ${filterFields.join("\n")}
2443
- }`);
2444
- filterFields.push(` OR: [${orFilterName}!]`);
2445
- typeDefs.push(`input ${filterName} {
2446
- ${filterFields.join("\n")}
2447
- }`);
2448
- }
2449
- const whereFields = [];
2450
- for (const columnName of Object.keys(tableInfo.columns)) {
2451
- const filterName = `${typeName}${capitalize(columnName)}Filters`;
2452
- whereFields.push(` ${columnName}: ${filterName}`);
2453
- }
2454
- whereFields.push(` OR: [${typeName}FiltersOr!]`);
2455
- const filtersOrFields = [];
2456
- for (const columnName of Object.keys(tableInfo.columns)) {
2457
- const filterName = `${typeName}${capitalize(columnName)}Filters`;
2458
- filtersOrFields.push(` ${columnName}: ${filterName}`);
2427
+ const normalizedType = typeStr.replace(/[^a-zA-Z0-9]/g, "");
2428
+ const filterTypeName = `${normalizedType}FieldFilter`;
2429
+ requiredFieldFilters.add(
2430
+ JSON.stringify({ normalizedType, baseType: typeStr })
2431
+ );
2432
+ whereFields.push(` ${columnName}: ${filterTypeName}`);
2459
2433
  }
2460
- typeDefs.push(
2461
- `input ${typeName}FiltersOr {
2462
- ${filtersOrFields.join("\n")}
2463
- }`
2464
- );
2434
+ whereFields.push(` OR: [${typeName}Filters!]`);
2465
2435
  typeDefs.push(`input ${typeName}Filters {
2466
2436
  ${whereFields.join("\n")}
2467
2437
  }`);
@@ -2495,6 +2465,33 @@ ${valueStrings.join("\n")}
2495
2465
  direction: OrderByDirection!
2496
2466
  priority: Int!
2497
2467
  }`);
2468
+ const filterTypesAdded = /* @__PURE__ */ new Set();
2469
+ for (const filterInfoJson of requiredFieldFilters) {
2470
+ const { normalizedType, baseType } = JSON.parse(filterInfoJson);
2471
+ const filterTypeName = `${normalizedType}FieldFilter`;
2472
+ if (filterTypesAdded.has(filterTypeName))
2473
+ continue;
2474
+ filterTypesAdded.add(filterTypeName);
2475
+ const filterFields = [];
2476
+ filterFields.push(` eq: ${baseType}`);
2477
+ filterFields.push(` ne: ${baseType}`);
2478
+ filterFields.push(` lt: ${baseType}`);
2479
+ filterFields.push(` lte: ${baseType}`);
2480
+ filterFields.push(` gt: ${baseType}`);
2481
+ filterFields.push(` gte: ${baseType}`);
2482
+ filterFields.push(` like: String`);
2483
+ filterFields.push(` notLike: String`);
2484
+ filterFields.push(` ilike: String`);
2485
+ filterFields.push(` notIlike: String`);
2486
+ filterFields.push(` inArray: [${baseType}!]`);
2487
+ filterFields.push(` notInArray: [${baseType}!]`);
2488
+ filterFields.push(` isNull: Boolean`);
2489
+ filterFields.push(` isNotNull: Boolean`);
2490
+ filterFields.push(` OR: [${filterTypeName}!]`);
2491
+ allDefs.push(`input ${filterTypeName} {
2492
+ ${filterFields.join("\n")}
2493
+ }`);
2494
+ }
2498
2495
  allDefs.push(...typeDefs);
2499
2496
  return allDefs.join("\n\n");
2500
2497
  };