drizzle-graphql-plus 0.8.10 → 0.8.11

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.js CHANGED
@@ -528,6 +528,18 @@ var generateTableFilterTypeCached = (table, tableName) => {
528
528
  filterTypeMap.set(table, filters);
529
529
  return filters;
530
530
  };
531
+ var interfaceTypeMap = /* @__PURE__ */ new WeakMap();
532
+ var generateTableInterfaceTypeCached = (table, tableName) => {
533
+ if (interfaceTypeMap.has(table))
534
+ return interfaceTypeMap.get(table);
535
+ const tableFields = generateTableSelectTypeFieldsCached(table, tableName);
536
+ const interfaceType = new GraphQLInterfaceType({
537
+ name: `${capitalize(tableName)}Fields`,
538
+ fields: tableFields
539
+ });
540
+ interfaceTypeMap.set(table, interfaceType);
541
+ return interfaceType;
542
+ };
531
543
  var generateSelectFields = (tables, tableName, relationMap, typeName, withOrder, relationsDepthLimit, currentDepth = 0, usedTables = /* @__PURE__ */ new Set()) => {
532
544
  const relations = relationMap[tableName];
533
545
  const relationEntries = relations ? Object.entries(relations) : [];
@@ -559,9 +571,15 @@ var generateSelectFields = (tables, tableName, relationMap, typeName, withOrder,
559
571
  newDepth,
560
572
  updatedUsedTables
561
573
  );
574
+ const targetTable = tables[targetTableName];
575
+ const targetInterface = generateTableInterfaceTypeCached(
576
+ targetTable,
577
+ targetTableName
578
+ );
562
579
  const relType = new GraphQLObjectType2({
563
580
  name: relTypeName,
564
- fields: { ...relData.tableFields, ...relData.relationFields }
581
+ fields: { ...relData.tableFields, ...relData.relationFields },
582
+ interfaces: [targetInterface]
565
583
  });
566
584
  if (isOne) {
567
585
  rawRelationFields.push([
@@ -639,10 +657,10 @@ var generateTableTypes = (tableName, tables, relationMap, withReturning, relatio
639
657
  name: `${stylizedName}InsertInput`,
640
658
  fields: insertFields
641
659
  });
642
- const tableFieldsInterface = new GraphQLInterfaceType({
643
- name: `${stylizedName}Fields`,
644
- fields: tableFields
645
- });
660
+ const tableFieldsInterface = generateTableInterfaceTypeCached(
661
+ table,
662
+ tableName
663
+ );
646
664
  const selectSingleOutput = new GraphQLObjectType2({
647
665
  name: `${stylizedName}SelectItem`,
648
666
  fields: { ...tableFields, ...relationFields },