pothos-drizzle-generator 0.1.31 → 0.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.
@@ -5,7 +5,7 @@ const drizzle_orm_1 = require("drizzle-orm");
5
5
  const drizzle_js_1 = require("../libs/drizzle.js");
6
6
  const permissions_js_1 = require("../libs/permissions.js");
7
7
  function defineModelObject(builder, generator, modelName, modelData, tables) {
8
- const { tableInfo, relations, columns, filterColumns, tableSingularAlias } = modelData;
8
+ const { relations, columns, filterColumns, tableSingularAlias } = modelData;
9
9
  const filterRelations = Object.entries(relations).filter(([, relay]) => tables[relay.targetTableName]);
10
10
  builder.drizzleObject(modelName, {
11
11
  name: tableSingularAlias,
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/definers/model.ts"],"names":[],"mappings":";;AAOA,8CAsCC;AA7CD,6CAAyE;AAEzE,mDAAsD;AACtD,2DAAsE;AAItE,SAAgB,iBAAiB,CAC/B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB,EACpB,MAAiC;IAEjC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAEvF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAC7C,CAAC;IAEF,OAAO,CAAC,aAAa,CAAC,SAAkB,EAAE;QACxC,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,SAAS,GAAG,eAAe;iBAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5F,MAAM,UAAU,GAAG,eAAe;iBAC/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;iBAC1D,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAC1B,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CACjE,CAAC;YACJ,MAAM,UAAU,GAAG,OAAO;iBACvB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;oBACf,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO;iBACZ,CAAC;aACZ,CAAC,CAAC;YAEL,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,CAA6E,EAC7E,SAAkC,EAClC,SAAiB,EACjB,KAAkB,EAClB,MAAiC;IAEjC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC9C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,eAAe,CAAE,CAAC;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IAE1E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAEhE,OAAO;QACL,SAAS;QACT,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;YACpB,QAAQ,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK;YACtC,IAAI,EAAE;gBACJ,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC7B,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;aACzC;YACD,KAAK,EAAE,CACL,IAKC,EACD,GAAW,EACX,EAAE;gBACF,MAAM,MAAM,GAAG,IAAA,6CAA4B,EACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;gBAEF,OAAO;oBACL,GAAG,IAAI;oBACP,KAAK,EAAE,eAAe;oBACtB,KAAK,EACH,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;wBACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;wBACpC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;oBAClC,KAAK,EAAE;wBACL,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBAClE;oBACD,OAAO,EACL,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;wBAC9C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpE,CAAC,CAAC,MAAM,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC;SACO,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,CAA6E,EAC7E,SAAkC,EAClC,SAAiB,EACjB,KAAkB,EAClB,MAAiC;IAEjC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,eAAe,CAAE,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,SAAS,OAAO;YACnB,CAAC,CAAC,KAAK,CAAC;gBACN,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC5C,UAAU,EAAE;oBACV,mBAAmB,EAAE,CAAC,IAAwB,EAAE,GAAW,EAAE,EAAE;wBAC7D,MAAM,MAAM,GAAG,IAAA,6CAA4B,EACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;wBAEF,OAAO;4BACL,OAAO,EAAE,EAAE;4BACX,MAAM,EAAE;gCACN,CAAC,GAAG,SAAS,OAAO,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;oCACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACxC,OAAO,MAAM;yCACV,MAAM,CAAC,EAAE,KAAK,EAAE,IAAA,iBAAG,EAAA,UAAU,EAAE,CAAC;yCAChC,IAAI,CAAC,KAAK,CAAC,WAAoB,CAAC;yCAChC,QAAQ,CACP,KAAK,CAAC,YAAqB,EAC3B,IAAA,iBAAG,EACD,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACtC,IAAA,gBAAE,EAAC,KAAK,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAC9C,CACF,CACF;yCACA,KAAK,CACJ,IAAA,iBAAG,EACD,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACtC,IAAA,gBAAE,EACA,KAAK,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,MAAM,EACtC,KAAK,CAAC,CAAC,CAAC,IAA0B,CAAC,CACpC,CACF,EACD,IAAA,6BAAgB,EAAC,KAAK,CAAC,WAAW,EAAE;wCAClC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qCACzD,CAAC,CACZ,CACF,CAAC;gCACN,CAAC;6BACF;yBACF,CAAC;oBACJ,CAAC;iBACF;aACO,CAAC;SACZ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,GAAG,SAAS,OAAO;YACnB,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE;gBACxB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC5C,KAAK,EAAE,CAAC,IAAwC,EAAE,GAAW,EAAE,EAAE;oBAC/D,MAAM,MAAM,GAAG,IAAA,6CAA4B,EACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;oBACF,OAAO,IAAA,6BAAgB,EAAC,KAAK,CAAC,WAAW,EAAE;wBACzC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBACzD,CAAC,CAAC;gBACd,CAAC;aACO,CAAC;SACZ,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { and, eq, sql, type AnyRelation, type Table } from \"drizzle-orm\";\r\nimport { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\r\n\r\nexport function defineModelObject<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { tableInfo, relations, columns, filterColumns, tableSingularAlias } = modelData;\r\n\r\n const filterRelations = Object.entries(relations).filter(\r\n ([, relay]) => tables[relay.targetTableName]\r\n );\r\n\r\n builder.drizzleObject(modelName as never, {\r\n name: tableSingularAlias,\r\n fields: (t) => {\r\n const relayList = filterRelations\r\n .filter(([name]) => filterColumns.includes(name))\r\n .map(([relayName, relay]) => createRelationField(t, generator, relayName, relay, tables));\r\n\r\n const relayCount = filterRelations\r\n .filter(([name]) => filterColumns.includes(`${name}Count`))\r\n .map(([relayName, relay]) =>\r\n createRelationCountField(t, generator, relayName, relay, tables)\r\n );\r\n const columnList = columns\r\n .filter(({ name }) => filterColumns.includes(name))\r\n .map((c) => [\r\n c.name,\r\n t.expose(c.name, {\r\n type: generator.getDataType(c),\r\n nullable: !c.notNull,\r\n } as never),\r\n ]);\r\n\r\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\r\n },\r\n });\r\n}\r\n\r\nfunction createRelationField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const { operations } = tables[targetModelName]!;\r\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\r\n\r\n return [\r\n relayName,\r\n t.relation(relayName, {\r\n nullable: relay.relationType === \"one\",\r\n args: {\r\n offset: t.arg({ type: \"Int\" }),\r\n limit: t.arg({ type: \"Int\" }),\r\n where: t.arg({ type: inputWhere }),\r\n orderBy: t.arg({ type: [inputOrderBy] }),\r\n },\r\n query: (\r\n args: {\r\n where?: object;\r\n offset?: number;\r\n limit?: number;\r\n orderBy?: object[];\r\n },\r\n ctx: object\r\n ) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n ...args,\r\n _name: targetModelName,\r\n limit:\r\n params.limit && args.limit\r\n ? Math.min(params.limit, args.limit)\r\n : (params.limit ?? args.limit),\r\n where: {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n },\r\n orderBy:\r\n args.orderBy && Object.keys(args.orderBy).length\r\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\r\n : params.orderBy,\r\n };\r\n },\r\n } as never),\r\n ];\r\n}\r\n\r\nfunction createRelationCountField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const operation = \"count\";\r\n const { operations } = tables[targetModelName]!;\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n\r\n if (relay.throughTable) {\r\n return [\r\n `${relayName}Count`,\r\n t.field({\r\n type: \"Int\",\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n extensions: {\r\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n columns: {},\r\n extras: {\r\n [`${relayName}Count`]: (table: Table) => {\r\n const client = generator.getClient(ctx);\r\n return client\r\n .select({ count: sql`count(*)` })\r\n .from(relay.targetTable as never)\r\n .leftJoin(\r\n relay.throughTable as never,\r\n and(\r\n ...relay.targetColumns.map((v, index) =>\r\n eq(relay.through!.target[index]!._.column, v)\r\n )\r\n )\r\n )\r\n .where(\r\n and(\r\n ...relay.sourceColumns.map((v, index) =>\r\n eq(\r\n relay.through!.source[index]!._.column,\r\n table[v.name as keyof typeof table]\r\n )\r\n ),\r\n createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never)\r\n )\r\n );\r\n },\r\n },\r\n };\r\n },\r\n },\r\n } as never),\r\n ];\r\n } else {\r\n return [\r\n `${relayName}Count`,\r\n t.relatedCount(relayName, {\r\n args: { where: t.arg({ type: inputWhere }) },\r\n where: (args: { limit?: number; where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n return createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n },\r\n } as never),\r\n ];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/definers/model.ts"],"names":[],"mappings":"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","sourcesContent":["import { and, eq, sql, type AnyRelation, type Table } from \"drizzle-orm\";\r\nimport { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\r\n\r\nexport function defineModelObject<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { relations, columns, filterColumns, tableSingularAlias } = modelData;\r\n\r\n const filterRelations = Object.entries(relations).filter(\r\n ([, relay]) => tables[relay.targetTableName]\r\n );\r\n\r\n builder.drizzleObject(modelName as never, {\r\n name: tableSingularAlias,\r\n fields: (t) => {\r\n const relayList = filterRelations\r\n .filter(([name]) => filterColumns.includes(name))\r\n .map(([relayName, relay]) => createRelationField(t, generator, relayName, relay, tables));\r\n\r\n const relayCount = filterRelations\r\n .filter(([name]) => filterColumns.includes(`${name}Count`))\r\n .map(([relayName, relay]) =>\r\n createRelationCountField(t, generator, relayName, relay, tables)\r\n );\r\n const columnList = columns\r\n .filter(({ name }) => filterColumns.includes(name))\r\n .map((c) => [\r\n c.name,\r\n t.expose(c.name, {\r\n type: generator.getDataType(c),\r\n nullable: !c.notNull,\r\n } as never),\r\n ]);\r\n\r\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\r\n },\r\n });\r\n}\r\n\r\nfunction createRelationField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const { operations } = tables[targetModelName]!;\r\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\r\n\r\n return [\r\n relayName,\r\n t.relation(relayName, {\r\n nullable: relay.relationType === \"one\",\r\n args: {\r\n offset: t.arg({ type: \"Int\" }),\r\n limit: t.arg({ type: \"Int\" }),\r\n where: t.arg({ type: inputWhere }),\r\n orderBy: t.arg({ type: [inputOrderBy] }),\r\n },\r\n query: (\r\n args: {\r\n where?: object;\r\n offset?: number;\r\n limit?: number;\r\n orderBy?: object[];\r\n },\r\n ctx: object\r\n ) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n ...args,\r\n _name: targetModelName,\r\n limit:\r\n params.limit && args.limit\r\n ? Math.min(params.limit, args.limit)\r\n : (params.limit ?? args.limit),\r\n where: {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n },\r\n orderBy:\r\n args.orderBy && Object.keys(args.orderBy).length\r\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\r\n : params.orderBy,\r\n };\r\n },\r\n } as never),\r\n ];\r\n}\r\n\r\nfunction createRelationCountField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const operation = \"count\";\r\n const { operations } = tables[targetModelName]!;\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n\r\n if (relay.throughTable) {\r\n return [\r\n `${relayName}Count`,\r\n t.field({\r\n type: \"Int\",\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n extensions: {\r\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n columns: {},\r\n extras: {\r\n [`${relayName}Count`]: (table: Table) => {\r\n const client = generator.getClient(ctx);\r\n return client\r\n .select({ count: sql`count(*)` })\r\n .from(relay.targetTable as never)\r\n .leftJoin(\r\n relay.throughTable as never,\r\n and(\r\n ...relay.targetColumns.map((v, index) =>\r\n eq(relay.through!.target[index]!._.column, v)\r\n )\r\n )\r\n )\r\n .where(\r\n and(\r\n ...relay.sourceColumns.map((v, index) =>\r\n eq(\r\n relay.through!.source[index]!._.column,\r\n table[v.name as keyof typeof table]\r\n )\r\n ),\r\n createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never)\r\n )\r\n );\r\n },\r\n },\r\n };\r\n },\r\n },\r\n } as never),\r\n ];\r\n } else {\r\n return [\r\n `${relayName}Count`,\r\n t.relatedCount(relayName, {\r\n args: { where: t.arg({ type: inputWhere }) },\r\n where: (args: { limit?: number; where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n return createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n },\r\n } as never),\r\n ];\r\n }\r\n}\r\n"]}
@@ -9,7 +9,7 @@ const graphql_js_1 = require("../libs/graphql.js");
9
9
  const permissions_js_1 = require("../libs/permissions.js");
10
10
  const resolver_helpers_js_1 = require("../libs/resolver-helpers.js");
11
11
  function defineCreateOne(builder, generator, modelName, modelData) {
12
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
12
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
13
13
  const inputCreate = generator.getInputCreate(modelName);
14
14
  const operationName = operationAliases.createOne ?? `createOne${tableSingularAlias}`;
15
15
  builder.mutationType({
@@ -55,7 +55,7 @@ function defineCreateOne(builder, generator, modelName, modelData) {
55
55
  });
56
56
  }
57
57
  function defineCreateMany(builder, generator, modelName, modelData) {
58
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
58
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
59
59
  const inputCreate = generator.getInputCreate(modelName);
60
60
  const operationName = operationAliases.createMany ?? `createMany${tableSingularAlias}`;
61
61
  builder.mutationType({
@@ -108,7 +108,7 @@ function defineCreateMany(builder, generator, modelName, modelData) {
108
108
  });
109
109
  }
110
110
  function defineUpdate(builder, generator, modelName, modelData) {
111
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
111
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
112
112
  const inputUpdate = generator.getInputUpdate(modelName);
113
113
  const inputWhere = generator.getInputWhere(modelName);
114
114
  const operationName = operationAliases.update ?? `update${tableSingularAlias}`;
@@ -163,7 +163,7 @@ function defineUpdate(builder, generator, modelName, modelData) {
163
163
  });
164
164
  }
165
165
  function defineDelete(builder, generator, modelName, modelData, tables) {
166
- const { tableInfo, columns, table, tableSingularAlias, operationAliases } = modelData;
166
+ const { columns, table, tableSingularAlias, operationAliases } = modelData;
167
167
  const inputWhere = generator.getInputWhere(modelName);
168
168
  const operationName = operationAliases.delete ?? `delete${tableSingularAlias}`;
169
169
  builder.mutationType({
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../src/definers/mutation.ts"],"names":[],"mappings":";;AAaA,0CA4DC;AAED,4CAyEC;AAED,oCAuEC;AAED,oCAkEC;AAhSD,mDAAsD;AACtD,mDAAoD;AACpD,2DAAsE;AACtE,qEAKqC;AAIrC,SAAgB,eAAe,CAC7B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACjG,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,IAAI,YAAY,kBAAkB,EAAE,CAAC;IAErF,OAAO,CAAC,YAAY,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACd,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC9B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;gBAC7D,OAAO,EAAE,KAAK,EACZ,KAAsC,EACtC,OAAgB,EAChB,IAAuB,EACvB,GAAW,EACX,IAAwB,EACxB,EAAE;oBACF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,MAAM,GAAG,IAAA,6CAA4B,EAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC1F,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACzD,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,IAAA,mCAAa,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACtF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,kCAAY,EAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;oBAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,KAAK,CAAC,EAAE,CAAC,CAAC;oBACZ,CAAC;oBACD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,MAAM;6BACV,MAAM,CAAC,KAAc,CAAC;6BACtB,MAAM,CAAC,cAAuB,CAAC;6BAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,CAAC;oBAED,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CACrC,EAAE;yBACC,MAAM,CAAC,KAAc,CAAC;yBACtB,MAAM,CAAC,cAAuB,CAAC;yBAC/B,SAAS,CAAC,SAAS,CAAC;yBACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBACtB,IAAI,gBAAgB,EAAE,CAAC;4BACrB,MAAM,IAAA,sCAAgB,EAAC;gCACrB,OAAO;gCACP,MAAM,EAAE,EAAE;gCACV,cAAc,EAAE,CAAC,mBAAmB,CAAC;gCACrC,SAAS;6BACV,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC,CAAC,CACL,CAAC;gBACJ,CAAC;aACO,CAAC;SACZ,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAC9B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACjG,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,IAAI,aAAa,kBAAkB,EAAE,CAAC;IAEvF,OAAO,CAAC,YAAY,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACd,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC9B,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;gBAC/D,OAAO,EAAE,KAAK,EACZ,KAAqC,EACrC,OAAgB,EAChB,IAAyB,EACzB,GAAW,EACX,IAAwB,EACxB,EAAE;oBACF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,MAAM,GAAG,IAAA,6CAA4B,EACzC,SAAS,EACT,YAAY,EACZ,GAAG,EACH,IAAI,EACJ,SAAS,CACV,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;wBAAE,OAAO,EAAE,CAAC;oBAClC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5C,GAAG,CAAC;wBACJ,GAAG,MAAM,CAAC,KAAK;qBAChB,CAAC,CAAC,CAAC;oBACJ,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,mCAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;oBACrF,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBACrE,MAAM,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;oBAE/E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACxE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,kCAAY,EAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;oBAE7E,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,KAAK,CAAC,EAAE,CAAC,CAAC;oBACZ,CAAC;oBACD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,MAAM;6BACV,MAAM,CAAC,KAAc,CAAC;6BACtB,MAAM,CAAC,eAAwB,CAAC;6BAChC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChF,CAAC;oBACD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CACrC,EAAE;yBACC,MAAM,CAAC,KAAc,CAAC;yBACtB,MAAM,CAAC,eAAwB,CAAC;yBAChC,SAAS,CAAC,SAAS,CAAC;yBACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBACtB,IAAI,gBAAgB,EAAE,CAAC;4BACrB,MAAM,IAAA,sCAAgB,EAAC;gCACrB,OAAO;gCACP,MAAM,EAAE,EAAE;gCACV,cAAc,EAAE,oBAAoB;gCACpC,SAAS;6BACV,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO,OAAO,CAAC;oBACjB,CAAC,CAAC,CACL,CAAC;gBACJ,CAAC;aACO,CAAC;SACZ,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAC1B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB;IAEpB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACjG,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAE/E,OAAO,CAAC,YAAY,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACd,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC9B,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE;oBACJ,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;oBACnD,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACnC;gBACD,OAAO,EAAE,KAAK,EACZ,KAAqC,EACrC,OAAgB,EAChB,IAAuC,EACvC,GAAW,EACX,IAAwB,EACxB,EAAE;oBACF,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,MAAM,GAAG,IAAA,6CAA4B,EAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACvF,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBACzD,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,IAAA,mCAAa,EAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACtF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;oBACxD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,kCAAY,EAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;oBAE7E,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,KAAK,CAAC,EAAE,CAAC,CAAC;oBACZ,CAAC;oBACD,MAAM,UAAU,GAAG,IAAA,6BAAgB,EAAC,KAAK,EAAE;wBACzC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBACzD,CAAC,CAAC;oBAEZ,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,MAAM;6BACV,MAAM,CAAC,KAAc,CAAC;6BACtB,GAAG,CAAC,cAAuB,CAAC;6BAC5B,KAAK,CAAC,UAAU,CAAC;6BACjB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChF,CAAC;oBAED,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CACrC,EAAE;yBACC,MAAM,CAAC,KAAc,CAAC;yBACtB,GAAG,CAAC,cAAuB,CAAC;yBAC5B,KAAK,CAAC,UAAU,CAAC;yBACjB,SAAS,CAAC,SAAS,CAAC;yBACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBACtB,IAAI,gBAAgB,EAAE,CAAC;4BACrB,MAAM,IAAA,sCAAgB,EAAC;gCACrB,OAAO;gCACP,MAAM,EAAE,EAAE;gCACV,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;gCAC/D,SAAS;6BACV,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO,OAAO,CAAC;oBACjB,CAAC,CAAC,CACL,CAAC;gBACJ,CAAC;aACO,CAAC;SACZ,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAC1B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB,EACpB,MAAiC;IAEjC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACtF,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAE/E,OAAO,CAAC,YAAY,CAAC;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACd,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC9B,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC5C,OAAO,EAAE,KAAK,EACZ,KAAqC,EACrC,OAAgB,EAChB,IAAwB,EACxB,GAAW,EACX,IAAwB,EACxB,EAAE;oBACF,MAAM,MAAM,GAAG,IAAA,6CAA4B,EAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACvF,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,kCAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC3D,MAAM,cAAc,GAAG;wBACrB,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBAClE,CAAC;oBAEF,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,MAAM,GAAG,MAAM,SAAS;6BAC3B,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;6BAC7B,QAAQ,CACP,IAAA,yCAAmB,EACjB,MAAM,EACN,SAAS,EACT,IAAA,2BAAc,EAAC,IAAI,CAAC,EACpB,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CACjC,CACX,CAAC;wBACJ,MAAM,SAAS;6BACZ,SAAS,CAAC,GAAG,CAAC;6BACd,MAAM,CAAC,KAAc,CAAC;6BACtB,KAAK,CAAC,IAAA,6BAAgB,EAAC,KAAK,EAAE,cAAuB,CAAC,CAAC,CAAC;wBAC3D,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAED,KAAK,CAAC,EAAE,CAAC,CAAC;oBACV,MAAM,UAAU,GAAG,IAAA,6BAAgB,EAAC,KAAK,EAAE,cAAuB,CAAC,CAAC;oBAEpE,OAAO,SAAS;wBACd,CAAC,CAAC,SAAS;6BACN,SAAS,CAAC,GAAG,CAAC;6BACd,MAAM,CAAC,KAAc,CAAC;6BACtB,KAAK,CAAC,UAAU,CAAC;6BACjB,SAAS,CAAC,SAAS,CAAC;wBACzB,CAAC,CAAC,SAAS;6BACN,SAAS,CAAC,GAAG,CAAC;6BACd,MAAM,CAAC,KAAc,CAAC;6BACtB,KAAK,CAAC,UAAU,CAAC;6BACjB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;aACO,CAAC;SACZ,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { getQueryFields } from \"../libs/graphql.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport {\r\n getReturning,\r\n insertRelayValue,\r\n replaceColumnValues,\r\n separateInput,\r\n} from \"../libs/resolver-helpers.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { GraphQLResolveInfo } from \"graphql\";\r\n\r\nexport function defineCreateOne<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputCreate = generator.getInputCreate(modelName);\r\n const operationName = operationAliases.createOne ?? `createOne${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: modelName,\r\n nullable: false,\r\n args: { input: t.arg({ type: inputCreate, required: true }) },\r\n resolve: async (\r\n query: (selection: unknown) => unknown,\r\n _parent: unknown,\r\n args: { input: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(modelName, \"createOne\", ctx, info, modelData);\r\n const combinedInput = { ...args.input, ...params.input };\r\n const { dbColumnsInput, relationFieldsInput } = separateInput(combinedInput, columns);\r\n const hasRelationInput = relationFieldsInput.length > 0;\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n if (!isRelay) {\r\n query({});\r\n }\r\n if (!returning) {\r\n return client\r\n .insert(table as never)\r\n .values(dbColumnsInput as never)\r\n .then(() => ({}));\r\n }\r\n\r\n return client.transaction(async (tx) =>\r\n tx\r\n .insert(table as never)\r\n .values(dbColumnsInput as never)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: [relationFieldsInput],\r\n relations,\r\n });\r\n }\r\n return results[0];\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineCreateMany<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputCreate = generator.getInputCreate(modelName);\r\n const operationName = operationAliases.createMany ?? `createMany${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: { input: t.arg({ type: [inputCreate], required: true }) },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { input: object[] },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(\r\n modelName,\r\n \"createMany\",\r\n ctx,\r\n info,\r\n modelData\r\n );\r\n if (!args.input.length) return [];\r\n const combinedInputs = args.input.map((v) => ({\r\n ...v,\r\n ...params.input,\r\n }));\r\n const separatedInputs = combinedInputs.map((input) => separateInput(input, columns));\r\n const dbColumnsInputs = separatedInputs.map((i) => i.dbColumnsInput);\r\n const relationFieldsInputs = separatedInputs.map((i) => i.relationFieldsInput);\r\n\r\n const hasRelationInput = relationFieldsInputs.some((v) => v.length > 0);\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n\r\n if (!isRelay) {\r\n query({});\r\n }\r\n if (!returning) {\r\n return client\r\n .insert(table as never)\r\n .values(dbColumnsInputs as never)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n }\r\n return client.transaction(async (tx) =>\r\n tx\r\n .insert(table as never)\r\n .values(dbColumnsInputs as never)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: relationFieldsInputs,\r\n relations,\r\n });\r\n }\r\n return results;\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineUpdate<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputUpdate = generator.getInputUpdate(modelName);\r\n const inputWhere = generator.getInputWhere(modelName);\r\n const operationName = operationAliases.update ?? `update${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: {\r\n input: t.arg({ type: inputUpdate, required: true }),\r\n where: t.arg({ type: inputWhere }),\r\n },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { input: object; where?: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(modelName, \"update\", ctx, info, modelData);\r\n const combinedInput = { ...args.input, ...params.input };\r\n const { dbColumnsInput, relationFieldsInput } = separateInput(combinedInput, columns);\r\n const hasRelationInput = relationFieldsInput.length > 0;\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n\r\n if (!isRelay) {\r\n query({});\r\n }\r\n const whereQuery = createWhereQuery(table, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n\r\n if (!returning) {\r\n return client\r\n .update(table as never)\r\n .set(dbColumnsInput as never)\r\n .where(whereQuery)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n }\r\n\r\n return client.transaction(async (tx) =>\r\n tx\r\n .update(table as never)\r\n .set(dbColumnsInput as never)\r\n .where(whereQuery)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: Array(results.length).fill(relationFieldsInput),\r\n relations,\r\n });\r\n }\r\n return results;\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineDelete<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { tableInfo, columns, table, tableSingularAlias, operationAliases } = modelData;\r\n const inputWhere = generator.getInputWhere(modelName);\r\n const operationName = operationAliases.delete ?? `delete${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { where?: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const params = checkPermissionsAndGetParams(modelName, \"delete\", ctx, info, modelData);\r\n const { returning, isRelay } = getReturning(info, columns);\r\n const whereCondition = {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n };\r\n\r\n if (isRelay) {\r\n const result = await generator\r\n .getQueryTable(ctx, modelName)\r\n .findMany(\r\n replaceColumnValues(\r\n tables,\r\n modelName,\r\n getQueryFields(info),\r\n query({ ...args, where: whereCondition })\r\n ) as never\r\n );\r\n await generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(createWhereQuery(table, whereCondition as never));\r\n return result;\r\n }\r\n\r\n query({});\r\n const whereQuery = createWhereQuery(table, whereCondition as never);\r\n\r\n return returning\r\n ? generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(whereQuery)\r\n .returning(returning)\r\n : generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(whereQuery)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n },\r\n } as never),\r\n }),\r\n });\r\n}"]}
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../src/definers/mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { getQueryFields } from \"../libs/graphql.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport {\r\n getReturning,\r\n insertRelayValue,\r\n replaceColumnValues,\r\n separateInput,\r\n} from \"../libs/resolver-helpers.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { GraphQLResolveInfo } from \"graphql\";\r\n\r\nexport function defineCreateOne<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputCreate = generator.getInputCreate(modelName);\r\n const operationName = operationAliases.createOne ?? `createOne${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: modelName,\r\n nullable: false,\r\n args: { input: t.arg({ type: inputCreate, required: true }) },\r\n resolve: async (\r\n query: (selection: unknown) => unknown,\r\n _parent: unknown,\r\n args: { input: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(modelName, \"createOne\", ctx, info, modelData);\r\n const combinedInput = { ...args.input, ...params.input };\r\n const { dbColumnsInput, relationFieldsInput } = separateInput(combinedInput, columns);\r\n const hasRelationInput = relationFieldsInput.length > 0;\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n if (!isRelay) {\r\n query({});\r\n }\r\n if (!returning) {\r\n return client\r\n .insert(table as never)\r\n .values(dbColumnsInput as never)\r\n .then(() => ({}));\r\n }\r\n\r\n return client.transaction(async (tx) =>\r\n tx\r\n .insert(table as never)\r\n .values(dbColumnsInput as never)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: [relationFieldsInput],\r\n relations,\r\n });\r\n }\r\n return results[0];\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineCreateMany<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputCreate = generator.getInputCreate(modelName);\r\n const operationName = operationAliases.createMany ?? `createMany${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: { input: t.arg({ type: [inputCreate], required: true }) },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { input: object[] },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(\r\n modelName,\r\n \"createMany\",\r\n ctx,\r\n info,\r\n modelData\r\n );\r\n if (!args.input.length) return [];\r\n const combinedInputs = args.input.map((v) => ({\r\n ...v,\r\n ...params.input,\r\n }));\r\n const separatedInputs = combinedInputs.map((input) => separateInput(input, columns));\r\n const dbColumnsInputs = separatedInputs.map((i) => i.dbColumnsInput);\r\n const relationFieldsInputs = separatedInputs.map((i) => i.relationFieldsInput);\r\n\r\n const hasRelationInput = relationFieldsInputs.some((v) => v.length > 0);\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n\r\n if (!isRelay) {\r\n query({});\r\n }\r\n if (!returning) {\r\n return client\r\n .insert(table as never)\r\n .values(dbColumnsInputs as never)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n }\r\n return client.transaction(async (tx) =>\r\n tx\r\n .insert(table as never)\r\n .values(dbColumnsInputs as never)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: relationFieldsInputs,\r\n relations,\r\n });\r\n }\r\n return results;\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineUpdate<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData\r\n) {\r\n const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;\r\n const inputUpdate = generator.getInputUpdate(modelName);\r\n const inputWhere = generator.getInputWhere(modelName);\r\n const operationName = operationAliases.update ?? `update${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: {\r\n input: t.arg({ type: inputUpdate, required: true }),\r\n where: t.arg({ type: inputWhere }),\r\n },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { input: object; where?: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const client = generator.getClient(ctx);\r\n const params = checkPermissionsAndGetParams(modelName, \"update\", ctx, info, modelData);\r\n const combinedInput = { ...args.input, ...params.input };\r\n const { dbColumnsInput, relationFieldsInput } = separateInput(combinedInput, columns);\r\n const hasRelationInput = relationFieldsInput.length > 0;\r\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\r\n\r\n if (!isRelay) {\r\n query({});\r\n }\r\n const whereQuery = createWhereQuery(table, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n\r\n if (!returning) {\r\n return client\r\n .update(table as never)\r\n .set(dbColumnsInput as never)\r\n .where(whereQuery)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n }\r\n\r\n return client.transaction(async (tx) =>\r\n tx\r\n .update(table as never)\r\n .set(dbColumnsInput as never)\r\n .where(whereQuery)\r\n .returning(returning)\r\n .then(async (results) => {\r\n if (hasRelationInput) {\r\n await insertRelayValue({\r\n results,\r\n client: tx,\r\n relationInputs: Array(results.length).fill(relationFieldsInput),\r\n relations,\r\n });\r\n }\r\n return results;\r\n })\r\n );\r\n },\r\n } as never),\r\n }),\r\n });\r\n}\r\n\r\nexport function defineDelete<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { columns, table, tableSingularAlias, operationAliases } = modelData;\r\n const inputWhere = generator.getInputWhere(modelName);\r\n const operationName = operationAliases.delete ?? `delete${tableSingularAlias}`;\r\n\r\n builder.mutationType({\r\n fields: (t) => ({\r\n [operationName]: t.drizzleField({\r\n type: [modelName],\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n resolve: async (\r\n query: (selection: unknown) => object,\r\n _parent: unknown,\r\n args: { where?: object },\r\n ctx: object,\r\n info: GraphQLResolveInfo\r\n ) => {\r\n const params = checkPermissionsAndGetParams(modelName, \"delete\", ctx, info, modelData);\r\n const { returning, isRelay } = getReturning(info, columns);\r\n const whereCondition = {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n };\r\n\r\n if (isRelay) {\r\n const result = await generator\r\n .getQueryTable(ctx, modelName)\r\n .findMany(\r\n replaceColumnValues(\r\n tables,\r\n modelName,\r\n getQueryFields(info),\r\n query({ ...args, where: whereCondition })\r\n ) as never\r\n );\r\n await generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(createWhereQuery(table, whereCondition as never));\r\n return result;\r\n }\r\n\r\n query({});\r\n const whereQuery = createWhereQuery(table, whereCondition as never);\r\n\r\n return returning\r\n ? generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(whereQuery)\r\n .returning(returning)\r\n : generator\r\n .getClient(ctx)\r\n .delete(table as never)\r\n .where(whereQuery)\r\n .then((v) => Array(\"rowCount\" in v ? v.rowCount : v.rowsAffected).fill({}));\r\n },\r\n } as never),\r\n }),\r\n });\r\n}"]}
@@ -110,16 +110,7 @@ export declare class DrizzleGenerator<Types extends SchemaTypes> {
110
110
  constructor(builder: PothosSchemaTypes.SchemaBuilder<Types>);
111
111
  getTableConfig(): (param: SchemaEntry) => TableConfig;
112
112
  createTableInfo(): Record<string, ModelData>;
113
- getClient(ctx: object): {
114
- readonly _: {
115
- readonly schema: unknown;
116
- readonly fullSchema: Record<string, unknown>;
117
- readonly tableNamesMap: Record<string, string>;
118
- readonly relations: AnyRelations;
119
- };
120
- query: {};
121
- $count: (source: Types["DrizzleRelations"][keyof Types["DrizzleRelations"]]["table"] | import("drizzle-orm").SQL<unknown> | import("drizzle-orm").SQLWrapper<unknown>, filter?: import("drizzle-orm").SQL) => import("drizzle-orm").SQL<number>;
122
- } & DbClient;
113
+ getClient(ctx: object): DbClient;
123
114
  getQueryTable(ctx: object, modelName: string): RelationalQueryBuilderShim;
124
115
  getRelations(): AnyRelations;
125
116
  getTables(): Record<string, ModelData>;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n isTable,\r\n type AnyRelations,\r\n type Column,\r\n type RelationsRecord,\r\n type SchemaEntry,\r\n} from \"drizzle-orm\";\r\nimport {\r\n BigIntResolver,\r\n ByteResolver,\r\n DateResolver,\r\n DateTimeResolver,\r\n JSONResolver,\r\n} from \"graphql-scalars\";\r\nimport { expandOperations, OperationBasic } from \"./libs/operations.js\";\r\nimport { createInputOperator } from \"./libs/pothos.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleClient } from \"@pothos/plugin-drizzle\";\r\n\r\ntype TableConfig = {\r\n columns: Column[];\r\n primaryKeys: { columns: Column[] }[];\r\n name: string;\r\n};\r\n\r\ntype RelationalQueryBuilderShim = {\r\n findFirst: (args: unknown) => Promise<unknown>;\r\n findMany: (args: unknown) => Promise<unknown[]>;\r\n};\r\n\r\nexport type DbClient = {\r\n query: Record<string, RelationalQueryBuilderShim>;\r\n select: (columns: Record<string, unknown>) => {\r\n from: (table: unknown) => {\r\n leftJoin: (\r\n table: unknown,\r\n condition: unknown\r\n ) => {\r\n where: (condition: unknown) => unknown;\r\n };\r\n where: (condition: unknown) => unknown;\r\n };\r\n };\r\n insert: (table: unknown) => {\r\n values: (values: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n update: (table: unknown) => {\r\n set: (values: unknown) => {\r\n where: (condition: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n };\r\n delete: (table: unknown) => {\r\n where: (condition: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n transaction: <T>(callback: (tx: DbClient) => Promise<T>) => Promise<T>;\r\n};\r\n\r\nexport type ModelData = {\r\n table: SchemaEntry;\r\n operations: (typeof OperationBasic)[number][];\r\n tableSingularAlias: string;\r\n tablePluralAlias: string;\r\n operationAliases: { [key in (typeof OperationBasic)[number]]?: string };\r\n filterColumns: string[];\r\n columns: Column[];\r\n primaryColumns: Column[];\r\n inputColumns: Column[];\r\n tableInfo: TableConfig;\r\n relations: RelationsRecord;\r\n executable?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => boolean | undefined)\r\n | undefined;\r\n limit?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => number | undefined)\r\n | undefined;\r\n orderBy?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n where?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n inputData?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n depthLimit?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => number | undefined)\r\n | undefined;\r\n};\r\n\r\nexport class DrizzleGenerator<Types extends SchemaTypes> {\r\n enums: Record<string, PothosSchemaTypes.EnumRef<Types, unknown>> = {};\r\n inputOperators: Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>> = {};\r\n inputType: Record<string, Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>>> = {};\r\n tables?: Record<string, ModelData>;\r\n\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>;\r\n constructor(builder: PothosSchemaTypes.SchemaBuilder<Types>) {\r\n this.builder = builder;\r\n this.createInputType();\r\n }\r\n getTableConfig() {\r\n const drizzleOption = this.builder.options.drizzle;\r\n return drizzleOption.getTableConfig as (param: SchemaEntry) => TableConfig;\r\n }\r\n createTableInfo(): Record<string, ModelData> {\r\n const options = this.builder.options.pothosDrizzleGenerator;\r\n const getConfig = this.getTableConfig();\r\n const relations = this.getRelations();\r\n const tables = Object.values(relations)\r\n .filter((t) => isTable(t.table))\r\n .map(({ name: modelName, table, relations }) => {\r\n const tableInfo = getConfig(table as never);\r\n const allOptions = options?.all;\r\n const modelOptions = options?.models?.[modelName];\r\n const columns = tableInfo.columns;\r\n const primaryColumns = Array.from(\r\n new Set([\r\n ...tableInfo.primaryKeys.flatMap((v) => v.columns),\r\n ...columns.filter((v) => v.primary),\r\n ])\r\n );\r\n\r\n const operationValue = (modelOptions?.operations ?? allOptions?.operations)?.({\r\n modelName,\r\n });\r\n const operationIncludes = expandOperations(operationValue?.include ?? OperationBasic);\r\n const operationExcludes = expandOperations(operationValue?.exclude ?? []);\r\n const operations = operationIncludes.filter((v) => !operationExcludes.includes(v));\r\n \r\n const aliasesValue = (modelOptions?.aliases ?? allOptions?.aliases)?.({\r\n modelName,\r\n });\r\n \r\n const operationAliasValue = (aliasesValue?.operations ?? {});\r\n const tableSingularAlias = aliasesValue?.singular ?? tableInfo.name;\r\n const tablePluralAlias = aliasesValue?.plural ?? `${tableInfo.name}s`;\r\n \r\n const columnValue = (modelOptions?.fields ?? allOptions?.fields)?.({\r\n modelName,\r\n });\r\n const include = (columnValue?.include as undefined | string[]) ?? [\r\n ...columns.map((c) => c.name),\r\n ...Object.keys(relations),\r\n ...Object.keys(relations).map((v) => `${v}Count`),\r\n ];\r\n const exclude = (columnValue?.exclude as undefined | string[]) ?? [];\r\n const filterColumns = include.filter((name) => !exclude.includes(name));\r\n\r\n const inputFieldValue = (modelOptions?.inputFields ?? allOptions?.inputFields)?.({\r\n modelName,\r\n });\r\n const includeInput = inputFieldValue?.include ?? columns.map((c) => c.name);\r\n const excludeInput = inputFieldValue?.exclude ?? [];\r\n const filterInputColumns = includeInput.filter((name) => !excludeInput.includes(name));\r\n return [\r\n modelName,\r\n {\r\n table,\r\n relations,\r\n columns,\r\n filterColumns,\r\n primaryColumns,\r\n operations,\r\n operationAliases: operationAliasValue,\r\n tableSingularAlias,\r\n tablePluralAlias,\r\n inputColumns: columns.filter((c) => filterInputColumns.includes(c.name)),\r\n tableInfo,\r\n executable: modelOptions?.executable ?? allOptions?.executable,\r\n limit: modelOptions?.limit ?? allOptions?.limit,\r\n orderBy: modelOptions?.orderBy ?? allOptions?.orderBy,\r\n where: modelOptions?.where ?? allOptions?.where,\r\n inputData: modelOptions?.inputData ?? allOptions?.inputData,\r\n depthLimit: modelOptions?.depthLimit ?? allOptions?.depthLimit,\r\n },\r\n ] as const;\r\n });\r\n const modelNames = tables.map(([name]) => name);\r\n\r\n const include = options?.use?.include ?? modelNames;\r\n const exclude = options?.use?.exclude ?? [];\r\n const filterTables = include.filter((name) => !exclude.includes(name));\r\n return Object.fromEntries(tables.filter(([name]) => filterTables.includes(name)));\r\n }\r\n getClient(ctx: object) {\r\n const options = this.builder.options;\r\n const drizzleOption = options.drizzle;\r\n const client =\r\n drizzleOption.client instanceof Function ? drizzleOption.client(ctx) : drizzleOption.client;\r\n return client as typeof client & DbClient;\r\n }\r\n getQueryTable(ctx: object, modelName: string) {\r\n return this.getClient(ctx).query[modelName as never] as RelationalQueryBuilderShim;\r\n }\r\n getRelations(): AnyRelations {\r\n const drizzleOption = this.builder.options.drizzle;\r\n const client = drizzleOption.client as DrizzleClient;\r\n return drizzleOption.relations ?? client._.relations;\r\n }\r\n getTables() {\r\n if (this.tables) return this.tables;\r\n const tables = this.createTableInfo();\r\n this.tables = tables;\r\n return tables;\r\n }\r\n getTable(table: SchemaEntry) {\r\n const result = Object.values(this.getTables()).find((v) => v.table === table);\r\n return result;\r\n }\r\n getInputType(\r\n modelName: string,\r\n type: string,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options: PothosSchemaTypes.InputObjectTypeOptions<any, any>\r\n ) {\r\n if (!this.inputType[modelName]) this.inputType[modelName] = {};\r\n if (this.inputType[modelName][type]) return this.inputType[modelName][type];\r\n const { tableSingularAlias } = this.getTables()[modelName]!;\r\n const input = this.builder.inputRef(`${tableSingularAlias}${type}`);\r\n input.implement(options);\r\n this.inputType[modelName][type] = input;\r\n return input;\r\n }\r\n getInputRelation(modelName: string) {\r\n const { relations } = this.getTables()[modelName]!;\r\n\r\n const relayFields = Object.entries(relations)\r\n .filter(([, relation]) => relation.through)\r\n .map(([relationName, relation]) => {\r\n const rowInputType = this.getInputType(modelName, `_${relationName}Set`, {\r\n fields: (t) =>\r\n Object.fromEntries(\r\n relation.targetColumns.map((col) => [\r\n col.name,\r\n t.field({\r\n type: this.getDataType(col),\r\n required: col.notNull && !col.hasDefault,\r\n }),\r\n ])\r\n ),\r\n });\r\n const relationInputType = this.getInputType(modelName, `_${relationName}`, {\r\n fields: (t) => ({\r\n set: t.field({ type: [rowInputType] }),\r\n }),\r\n });\r\n\r\n return [relationName, relationInputType] as const;\r\n });\r\n return relayFields;\r\n }\r\n getInputCreate(modelName: string) {\r\n const { inputColumns } = this.getTables()[modelName]!;\r\n\r\n return this.getInputType(modelName, \"Create\", {\r\n fields: (t) => {\r\n const dbFields = inputColumns.map((col: Column) => [\r\n col.name,\r\n t.field({\r\n type: this.getDataType(col),\r\n required: col.notNull && !col.hasDefault,\r\n }),\r\n ]);\r\n const relayFields = this.getInputRelation(modelName);\r\n\r\n return Object.fromEntries([\r\n ...dbFields,\r\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\r\n ]);\r\n },\r\n });\r\n }\r\n\r\n getInputUpdate(modelName: string) {\r\n const { inputColumns } = this.getTables()[modelName]!;\r\n return this.getInputType(modelName, \"Update\", {\r\n fields: (t) => {\r\n const dbFields = inputColumns.map((c: Column) => [\r\n c.name,\r\n t.field({\r\n type: this.getDataType(c),\r\n }),\r\n ]);\r\n const relayFields = this.getInputRelation(modelName);\r\n return Object.fromEntries([\r\n ...dbFields,\r\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\r\n ]);\r\n },\r\n });\r\n }\r\n getInputWhere(modelName: string) {\r\n const { tableInfo, relations } = this.getTables()[modelName]!;\r\n const inputWhere = this.getInputType(modelName, \"Where\", {\r\n fields: (t) => {\r\n return Object.fromEntries([\r\n [\"AND\", t.field({ type: [inputWhere] })],\r\n [\"OR\", t.field({ type: [inputWhere] })],\r\n [\"NOT\", t.field({ type: inputWhere })],\r\n ...tableInfo.columns.map((c: Column) => {\r\n return [\r\n c.name,\r\n t.field({\r\n type: this.getInputOperator(this.getDataType(c)),\r\n }),\r\n ];\r\n }),\r\n ...Object.entries(relations).map(([key, relay]) => {\r\n const table = this.getTable(relay.targetTable);\r\n if (!table) return [];\r\n const { tableSingularAlias } = table;\r\n return [\r\n key,\r\n t.field({\r\n type: `${tableSingularAlias}Where`,\r\n }),\r\n ];\r\n }),\r\n ]);\r\n },\r\n });\r\n return inputWhere;\r\n }\r\n getInputOrderBy(modelName: string) {\r\n const { tableInfo } = this.getTables()[modelName]!;\r\n const inputWhere = this.getInputType(modelName, \"OrderBy\", {\r\n fields: (t) => {\r\n return Object.fromEntries(\r\n tableInfo.columns.map((c: Column) => {\r\n return [\r\n c.name,\r\n t.field({\r\n type: this.enums[\"OrderBy\"]!,\r\n }),\r\n ];\r\n })\r\n );\r\n },\r\n });\r\n return inputWhere;\r\n }\r\n\r\n getInputOperator(type: string | [string]) {\r\n const typeName = Array.isArray(type) ? `Array${type[0]}` : type;\r\n const input = this.inputOperators[typeName] ?? createInputOperator(this.builder, type);\r\n this.inputOperators[typeName] = input;\r\n return input;\r\n }\r\n createInputType() {\r\n const builder: PothosSchemaTypes.SchemaBuilder<Types> = this.builder;\r\n\r\n const scalars = [\r\n [\"BigInt\", BigIntResolver],\r\n [\"Date\", DateResolver],\r\n [\"Bytes\", ByteResolver],\r\n [\"DateTime\", DateTimeResolver],\r\n [\"Json\", JSONResolver],\r\n ] as const;\r\n for (const [scalarName, scalarResolver] of scalars) {\r\n if (!builder.configStore.hasConfig(scalarName)) {\r\n builder.addScalarType(scalarName as never, scalarResolver, {});\r\n }\r\n }\r\n\r\n this.enums[\"OrderBy\"] = builder.enumType(\"OrderBy\", {\r\n values: {\r\n Asc: { value: \"asc\" },\r\n Desc: { value: \"desc\" },\r\n },\r\n });\r\n }\r\n getDataType(column: Column & { dimensions?: number }): string | [string] {\r\n const isArray = column.dimensions;\r\n const types = column.dataType.split(\" \");\r\n if (types[0] === \"string\" && types[1] !== \"enum\") {\r\n return isArray ? [\"String\"] : \"String\";\r\n }\r\n if (types[0] === \"bigint\") {\r\n return isArray ? [\"BigInt\"] : \"BigInt\";\r\n }\r\n switch (types[1] ?? types[0]) {\r\n case \"enum\": {\r\n const sqlType = column.getSQLType();\r\n const e = this.enums[sqlType];\r\n if (!e) {\r\n this.enums[sqlType] = this.builder.enumType(sqlType, {\r\n values: column.enumValues!,\r\n });\r\n }\r\n return isArray ? [sqlType] : sqlType;\r\n }\r\n case \"buffer\":\r\n return isArray ? [\"Bytes\"] : \"Bytes\";\r\n case \"json\":\r\n return isArray ? [\"Json\"] : \"Json\";\r\n case \"date\":\r\n return isArray ? [\"DateTime\"] : \"DateTime\";\r\n case \"boolean\":\r\n return isArray ? [\"Boolean\"] : \"Boolean\";\r\n case \"point\":\r\n case \"double\":\r\n return isArray ? [\"Float\"] : \"Float\";\r\n }\r\n if (types[1]?.startsWith(\"int\")) {\r\n return isArray ? [\"Int\"] : \"Int\";\r\n }\r\n const type = isArray ? types[1]! : types[0]!;\r\n const scalarMap: Record<string, string> = {\r\n number: \"Float\",\r\n string: \"String\",\r\n };\r\n const result = scalarMap[type] ?? \"String\";\r\n return isArray ? [result] : result;\r\n }\r\n}"]}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n isTable,\r\n type AnyRelations,\r\n type Column,\r\n type RelationsRecord,\r\n type SchemaEntry,\r\n} from \"drizzle-orm\";\r\nimport {\r\n BigIntResolver,\r\n ByteResolver,\r\n DateResolver,\r\n DateTimeResolver,\r\n JSONResolver,\r\n} from \"graphql-scalars\";\r\nimport { expandOperations, OperationBasic } from \"./libs/operations.js\";\r\nimport { createInputOperator } from \"./libs/pothos.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleClient } from \"@pothos/plugin-drizzle\";\r\n\r\ntype TableConfig = {\r\n columns: Column[];\r\n primaryKeys: { columns: Column[] }[];\r\n name: string;\r\n};\r\n\r\ntype RelationalQueryBuilderShim = {\r\n findFirst: (args: unknown) => Promise<unknown>;\r\n findMany: (args: unknown) => Promise<unknown[]>;\r\n};\r\n\r\nexport type DbClient = {\r\n query: Record<string, RelationalQueryBuilderShim>;\r\n select: (columns: Record<string, unknown>) => {\r\n from: (table: unknown) => {\r\n leftJoin: (\r\n table: unknown,\r\n condition: unknown\r\n ) => {\r\n where: (condition: unknown) => unknown;\r\n };\r\n where: (condition: unknown) => unknown;\r\n };\r\n };\r\n insert: (table: unknown) => {\r\n values: (values: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n update: (table: unknown) => {\r\n set: (values: unknown) => {\r\n where: (condition: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n };\r\n delete: (table: unknown) => {\r\n where: (condition: unknown) => {\r\n returning: (returning: unknown) => Promise<Record<string, unknown>[]>;\r\n then: (\r\n onfulfilled: (value: { rowCount: number } | { rowsAffected: number }) => unknown\r\n ) => Promise<unknown>;\r\n };\r\n };\r\n transaction: <T>(callback: (tx: DbClient) => Promise<T>) => Promise<T>;\r\n};\r\n\r\nexport type ModelData = {\r\n table: SchemaEntry;\r\n operations: (typeof OperationBasic)[number][];\r\n tableSingularAlias: string;\r\n tablePluralAlias: string;\r\n operationAliases: { [key in (typeof OperationBasic)[number]]?: string };\r\n filterColumns: string[];\r\n columns: Column[];\r\n primaryColumns: Column[];\r\n inputColumns: Column[];\r\n tableInfo: TableConfig;\r\n relations: RelationsRecord;\r\n executable?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => boolean | undefined)\r\n | undefined;\r\n limit?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => number | undefined)\r\n | undefined;\r\n orderBy?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n where?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n inputData?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => object | undefined)\r\n | undefined;\r\n depthLimit?:\r\n | ((params: {\r\n ctx: object;\r\n modelName: string;\r\n operation: (typeof OperationBasic)[number];\r\n }) => number | undefined)\r\n | undefined;\r\n};\r\n\r\nexport class DrizzleGenerator<Types extends SchemaTypes> {\r\n enums: Record<string, PothosSchemaTypes.EnumRef<Types, unknown>> = {};\r\n inputOperators: Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>> = {};\r\n inputType: Record<string, Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>>> = {};\r\n tables?: Record<string, ModelData>;\r\n\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>;\r\n constructor(builder: PothosSchemaTypes.SchemaBuilder<Types>) {\r\n this.builder = builder;\r\n this.createInputType();\r\n }\r\n getTableConfig() {\r\n const drizzleOption = this.builder.options.drizzle;\r\n return drizzleOption.getTableConfig as (param: SchemaEntry) => TableConfig;\r\n }\r\n createTableInfo(): Record<string, ModelData> {\r\n const options = this.builder.options.pothosDrizzleGenerator;\r\n const getConfig = this.getTableConfig();\r\n const relations = this.getRelations();\r\n const tables = Object.values(relations)\r\n .filter((t) => isTable(t.table))\r\n .map(({ name: modelName, table, relations }) => {\r\n const tableInfo = getConfig(table as never);\r\n const allOptions = options?.all;\r\n const modelOptions = options?.models?.[modelName];\r\n const columns = tableInfo.columns;\r\n const primaryColumns = Array.from(\r\n new Set([\r\n ...tableInfo.primaryKeys.flatMap((v) => v.columns),\r\n ...columns.filter((v) => v.primary),\r\n ])\r\n );\r\n\r\n const operationValue = (modelOptions?.operations ?? allOptions?.operations)?.({\r\n modelName,\r\n });\r\n const operationIncludes = expandOperations(operationValue?.include ?? OperationBasic);\r\n const operationExcludes = expandOperations(operationValue?.exclude ?? []);\r\n const operations = operationIncludes.filter((v) => !operationExcludes.includes(v));\r\n \r\n const aliasesValue = (modelOptions?.aliases ?? allOptions?.aliases)?.({\r\n modelName,\r\n });\r\n \r\n const operationAliasValue = (aliasesValue?.operations ?? {});\r\n const tableSingularAlias = aliasesValue?.singular ?? tableInfo.name;\r\n const tablePluralAlias = aliasesValue?.plural ?? `${tableInfo.name}s`;\r\n \r\n const columnValue = (modelOptions?.fields ?? allOptions?.fields)?.({\r\n modelName,\r\n });\r\n const include = (columnValue?.include as undefined | string[]) ?? [\r\n ...columns.map((c) => c.name),\r\n ...Object.keys(relations),\r\n ...Object.keys(relations).map((v) => `${v}Count`),\r\n ];\r\n const exclude = (columnValue?.exclude as undefined | string[]) ?? [];\r\n const filterColumns = include.filter((name) => !exclude.includes(name));\r\n\r\n const inputFieldValue = (modelOptions?.inputFields ?? allOptions?.inputFields)?.({\r\n modelName,\r\n });\r\n const includeInput = inputFieldValue?.include ?? columns.map((c) => c.name);\r\n const excludeInput = inputFieldValue?.exclude ?? [];\r\n const filterInputColumns = includeInput.filter((name) => !excludeInput.includes(name));\r\n return [\r\n modelName,\r\n {\r\n table,\r\n relations,\r\n columns,\r\n filterColumns,\r\n primaryColumns,\r\n operations,\r\n operationAliases: operationAliasValue,\r\n tableSingularAlias,\r\n tablePluralAlias,\r\n inputColumns: columns.filter((c) => filterInputColumns.includes(c.name)),\r\n tableInfo,\r\n executable: modelOptions?.executable ?? allOptions?.executable,\r\n limit: modelOptions?.limit ?? allOptions?.limit,\r\n orderBy: modelOptions?.orderBy ?? allOptions?.orderBy,\r\n where: modelOptions?.where ?? allOptions?.where,\r\n inputData: modelOptions?.inputData ?? allOptions?.inputData,\r\n depthLimit: modelOptions?.depthLimit ?? allOptions?.depthLimit,\r\n },\r\n ] as const;\r\n });\r\n const modelNames = tables.map(([name]) => name);\r\n\r\n const include = options?.use?.include ?? modelNames;\r\n const exclude = options?.use?.exclude ?? [];\r\n const filterTables = include.filter((name) => !exclude.includes(name));\r\n return Object.fromEntries(tables.filter(([name]) => filterTables.includes(name)));\r\n }\r\n getClient(ctx: object): DbClient {\r\n const options = this.builder.options;\r\n const drizzleOption = options.drizzle;\r\n const client =\r\n drizzleOption.client instanceof Function ? drizzleOption.client(ctx) : drizzleOption.client;\r\n return client as unknown as DbClient;\r\n }\r\n getQueryTable(ctx: object, modelName: string) {\r\n return this.getClient(ctx).query[modelName as never] as RelationalQueryBuilderShim;\r\n }\r\n getRelations(): AnyRelations {\r\n const drizzleOption = this.builder.options.drizzle;\r\n const client = drizzleOption.client as DrizzleClient;\r\n return drizzleOption.relations ?? client._.relations;\r\n }\r\n getTables() {\r\n if (this.tables) return this.tables;\r\n const tables = this.createTableInfo();\r\n this.tables = tables;\r\n return tables;\r\n }\r\n getTable(table: SchemaEntry) {\r\n const result = Object.values(this.getTables()).find((v) => v.table === table);\r\n return result;\r\n }\r\n getInputType(\r\n modelName: string,\r\n type: string,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options: PothosSchemaTypes.InputObjectTypeOptions<any, any>\r\n ) {\r\n if (!this.inputType[modelName]) this.inputType[modelName] = {};\r\n if (this.inputType[modelName][type]) return this.inputType[modelName][type];\r\n const { tableSingularAlias } = this.getTables()[modelName]!;\r\n const input = this.builder.inputRef(`${tableSingularAlias}${type}`);\r\n input.implement(options);\r\n this.inputType[modelName][type] = input;\r\n return input;\r\n }\r\n getInputRelation(modelName: string) {\r\n const { relations } = this.getTables()[modelName]!;\r\n\r\n const relayFields = Object.entries(relations)\r\n .filter(([, relation]) => relation.through)\r\n .map(([relationName, relation]) => {\r\n const rowInputType = this.getInputType(modelName, `_${relationName}Set`, {\r\n fields: (t) =>\r\n Object.fromEntries(\r\n relation.targetColumns.map((col) => [\r\n col.name,\r\n t.field({\r\n type: this.getDataType(col),\r\n required: col.notNull && !col.hasDefault,\r\n }),\r\n ])\r\n ),\r\n });\r\n const relationInputType = this.getInputType(modelName, `_${relationName}`, {\r\n fields: (t) => ({\r\n set: t.field({ type: [rowInputType] }),\r\n }),\r\n });\r\n\r\n return [relationName, relationInputType] as const;\r\n });\r\n return relayFields;\r\n }\r\n getInputCreate(modelName: string) {\r\n const { inputColumns } = this.getTables()[modelName]!;\r\n\r\n return this.getInputType(modelName, \"Create\", {\r\n fields: (t) => {\r\n const dbFields = inputColumns.map((col: Column) => [\r\n col.name,\r\n t.field({\r\n type: this.getDataType(col),\r\n required: col.notNull && !col.hasDefault,\r\n }),\r\n ]);\r\n const relayFields = this.getInputRelation(modelName);\r\n\r\n return Object.fromEntries([\r\n ...dbFields,\r\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\r\n ]);\r\n },\r\n });\r\n }\r\n\r\n getInputUpdate(modelName: string) {\r\n const { inputColumns } = this.getTables()[modelName]!;\r\n return this.getInputType(modelName, \"Update\", {\r\n fields: (t) => {\r\n const dbFields = inputColumns.map((c: Column) => [\r\n c.name,\r\n t.field({\r\n type: this.getDataType(c),\r\n }),\r\n ]);\r\n const relayFields = this.getInputRelation(modelName);\r\n return Object.fromEntries([\r\n ...dbFields,\r\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\r\n ]);\r\n },\r\n });\r\n }\r\n getInputWhere(modelName: string) {\r\n const { tableInfo, relations } = this.getTables()[modelName]!;\r\n const inputWhere = this.getInputType(modelName, \"Where\", {\r\n fields: (t) => {\r\n return Object.fromEntries([\r\n [\"AND\", t.field({ type: [inputWhere] })],\r\n [\"OR\", t.field({ type: [inputWhere] })],\r\n [\"NOT\", t.field({ type: inputWhere })],\r\n ...tableInfo.columns.map((c: Column) => {\r\n return [\r\n c.name,\r\n t.field({\r\n type: this.getInputOperator(this.getDataType(c)),\r\n }),\r\n ];\r\n }),\r\n ...Object.entries(relations).map(([key, relay]) => {\r\n const table = this.getTable(relay.targetTable);\r\n if (!table) return [];\r\n const { tableSingularAlias } = table;\r\n return [\r\n key,\r\n t.field({\r\n type: `${tableSingularAlias}Where`,\r\n }),\r\n ];\r\n }),\r\n ]);\r\n },\r\n });\r\n return inputWhere;\r\n }\r\n getInputOrderBy(modelName: string) {\r\n const { tableInfo } = this.getTables()[modelName]!;\r\n const inputWhere = this.getInputType(modelName, \"OrderBy\", {\r\n fields: (t) => {\r\n return Object.fromEntries(\r\n tableInfo.columns.map((c: Column) => {\r\n return [\r\n c.name,\r\n t.field({\r\n type: this.enums[\"OrderBy\"]!,\r\n }),\r\n ];\r\n })\r\n );\r\n },\r\n });\r\n return inputWhere;\r\n }\r\n\r\n getInputOperator(type: string | [string]) {\r\n const typeName = Array.isArray(type) ? `Array${type[0]}` : type;\r\n const input = this.inputOperators[typeName] ?? createInputOperator(this.builder, type);\r\n this.inputOperators[typeName] = input;\r\n return input;\r\n }\r\n createInputType() {\r\n const builder: PothosSchemaTypes.SchemaBuilder<Types> = this.builder;\r\n\r\n const scalars = [\r\n [\"BigInt\", BigIntResolver],\r\n [\"Date\", DateResolver],\r\n [\"Bytes\", ByteResolver],\r\n [\"DateTime\", DateTimeResolver],\r\n [\"Json\", JSONResolver],\r\n ] as const;\r\n for (const [scalarName, scalarResolver] of scalars) {\r\n if (!builder.configStore.hasConfig(scalarName)) {\r\n builder.addScalarType(scalarName as never, scalarResolver, {});\r\n }\r\n }\r\n\r\n this.enums[\"OrderBy\"] = builder.enumType(\"OrderBy\", {\r\n values: {\r\n Asc: { value: \"asc\" },\r\n Desc: { value: \"desc\" },\r\n },\r\n });\r\n }\r\n getDataType(column: Column & { dimensions?: number }): string | [string] {\r\n const isArray = column.dimensions;\r\n const types = column.dataType.split(\" \");\r\n if (types[0] === \"string\" && types[1] !== \"enum\") {\r\n return isArray ? [\"String\"] : \"String\";\r\n }\r\n if (types[0] === \"bigint\") {\r\n return isArray ? [\"BigInt\"] : \"BigInt\";\r\n }\r\n switch (types[1] ?? types[0]) {\r\n case \"enum\": {\r\n const sqlType = column.getSQLType();\r\n const e = this.enums[sqlType];\r\n if (!e) {\r\n this.enums[sqlType] = this.builder.enumType(sqlType, {\r\n values: column.enumValues!,\r\n });\r\n }\r\n return isArray ? [sqlType] : sqlType;\r\n }\r\n case \"buffer\":\r\n return isArray ? [\"Bytes\"] : \"Bytes\";\r\n case \"json\":\r\n return isArray ? [\"Json\"] : \"Json\";\r\n case \"date\":\r\n return isArray ? [\"DateTime\"] : \"DateTime\";\r\n case \"boolean\":\r\n return isArray ? [\"Boolean\"] : \"Boolean\";\r\n case \"point\":\r\n case \"double\":\r\n return isArray ? [\"Float\"] : \"Float\";\r\n }\r\n if (types[1]?.startsWith(\"int\")) {\r\n return isArray ? [\"Int\"] : \"Int\";\r\n }\r\n const type = isArray ? types[1]! : types[0]!;\r\n const scalarMap: Record<string, string> = {\r\n number: \"Float\",\r\n string: \"String\",\r\n };\r\n const result = scalarMap[type] ?? \"String\";\r\n return isArray ? [result] : result;\r\n }\r\n}"]}
@@ -1,4 +1,4 @@
1
- import { type Column, type RelationsRecord } from "drizzle-orm";
1
+ import { type Column, type RelationsRecord, type SQL } from "drizzle-orm";
2
2
  import { type FieldTree } from "./graphql.js";
3
3
  import type { DbClient, ModelData } from "../generator.js";
4
4
  import type { ResolvedOperationParams } from "./permissions.js";
@@ -29,20 +29,14 @@ interface QueryDataType {
29
29
  _name?: string;
30
30
  }
31
31
  export declare const replaceColumnValues: (tables: Record<string, ModelData>, tableName: string, tree: FieldTree, queryData: QueryDataType) => QueryDataType | {
32
- columns: {};
32
+ columns: Record<string, boolean>;
33
33
  extras: {
34
- _: import("drizzle-orm").SQL<unknown>;
34
+ _: SQL;
35
35
  };
36
36
  };
37
37
  export declare const getReturning: (info: GraphQLResolveInfo, columns: Column[], primary?: boolean) => {
38
38
  isRelay: boolean;
39
39
  queryFields: FieldTree;
40
- returning: undefined;
41
- } | {
42
- isRelay: boolean;
43
- queryFields: FieldTree;
44
- returning: {
45
- [k: string]: Column<import("drizzle-orm").ColumnBaseConfig<import("drizzle-orm").ColumnType>, object>;
46
- };
40
+ returning: Record<string, Column> | undefined;
47
41
  };
48
42
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"resolver-helpers.js","sourceRoot":"","sources":["../../../src/libs/resolver-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { and, eq, sql, type Column, type RelationsRecord } from \"drizzle-orm\";\nimport { getQueryFields, type FieldTree } from \"./graphql.js\";\nimport type { DbClient, ModelData } from \"../generator.js\";\nimport type { ResolvedOperationParams } from \"./permissions.js\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\ntype QueryArgs = {\n offset?: number;\n limit?: number;\n where?: object;\n orderBy?: object[];\n};\n\nexport function prepareQueryOptions(\n args: QueryArgs,\n params: ResolvedOperationParams,\n isMany: boolean\n) {\n const where = {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n };\n\n const orderBy =\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy;\n\n const queryOptions: Omit<QueryArgs, \"orderBy\"> & { where: object; orderBy?: object } = {\n ...args,\n where,\n orderBy,\n };\n\n if (isMany) {\n queryOptions.limit =\n params.limit != null && args.limit != null\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit);\n }\n\n return queryOptions;\n}\n\nexport function separateInput(input: object, columns: Pick<Column, \"name\">[]) {\n const dbColumnsInput: Record<string, unknown> = {};\n const relationFieldsInput: [string, unknown][] = [];\n\n for (const [key, value] of Object.entries(input)) {\n if (columns.some((col) => col.name === key)) {\n dbColumnsInput[key] = value;\n } else {\n relationFieldsInput.push([key, value]);\n }\n }\n\n return { dbColumnsInput, relationFieldsInput };\n}\n\nexport async function insertRelayValue({\n results,\n client,\n relationInputs,\n relations,\n}: {\n results: Record<string, unknown>[];\n client: DbClient;\n relationInputs: [string, unknown][][];\n relations: RelationsRecord;\n}) {\n for (const index in results) {\n const result = results[index];\n const relationInput = relationInputs[index];\n if (!result || !relationInput?.length) continue;\n for (const [relationName, value] of relationInput) {\n const inputPayload = value as { set?: Record<string, unknown>[] };\n const itemsToSet = inputPayload.set;\n\n const relay = relations[relationName];\n if (!itemsToSet || !relay?.through || !relay.throughTable) continue;\n\n const { throughTable } = relay;\n\n const sourceToThroughMap = Object.fromEntries(\n relay.sourceColumns.map((v, i) => [v.name, relay.through!.source[i]!._.key])\n );\n const targetToThroughMap = Object.fromEntries(\n relay.targetColumns.map((v, i) => [v.name, relay.through!.target[i]!._.key])\n );\n\n const sourceFilters = relay.sourceColumns.map(\n (v) => [sourceToThroughMap[v.name], result[v.name]] as const\n );\n await client\n .delete(throughTable as never)\n .where(\n and(...sourceFilters.map(([key, val]) => eq(relay.throughTable![key as never], val)))\n );\n\n const insertRows = itemsToSet.map((item) => {\n const targetValues = Object.entries(item).map(([key, val]) => [\n targetToThroughMap[key],\n val,\n ]);\n return Object.fromEntries([...targetValues, ...sourceFilters]);\n });\n\n if (insertRows.length > 0) {\n await client.insert(throughTable as never).values(insertRows);\n }\n }\n }\n}\n\ninterface QueryDataType {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n}\n\nexport const replaceColumnValues = (\n tables: Record<string, ModelData>,\n tableName: string,\n tree: FieldTree,\n queryData: QueryDataType\n) => {\n if (Object.keys(tree).every((v) => v === \"__typename\")) {\n return {\n columns: {},\n extras: { _: sql`0` },\n };\n }\n const info = tables[tableName]!;\n const columns = info?.columns;\n if (columns) {\n queryData.columns = Object.fromEntries(\n Object.entries(tree).flatMap(([name, value]) =>\n value === true && columns.find((v) => v.name === name) ? [[name, true]] : []\n )\n );\n }\n if (queryData.with) {\n Object.entries(queryData.with).forEach(([name, query]) => {\n if (typeof tree[name] === \"object\") {\n replaceColumnValues(tables, (query as { _name: string })._name, tree[name], query);\n }\n });\n }\n return queryData;\n};\n\nexport const getReturning = (info: GraphQLResolveInfo, columns: Column[], primary?: boolean) => {\n const queryFields = getQueryFields(info);\n const isRelay = Object.keys(queryFields).some((v) => !columns.find((c) => c.name === v));\n const returningColumns = columns.filter(\n (v) => queryFields[v.name] || ((primary || isRelay) && v.primary)\n );\n if (!returningColumns.length) return { isRelay, queryFields, returning: undefined };\n const returning = Object.fromEntries(returningColumns.map((v) => [v.name, v]));\n return {\n isRelay,\n queryFields,\n returning,\n };\n};\n"]}
1
+ {"version":3,"file":"resolver-helpers.js","sourceRoot":"","sources":["../../../src/libs/resolver-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { and, eq, sql, type Column, type RelationsRecord, type SQL } from \"drizzle-orm\";\nimport { getQueryFields, type FieldTree } from \"./graphql.js\";\nimport type { DbClient, ModelData } from \"../generator.js\";\nimport type { ResolvedOperationParams } from \"./permissions.js\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\ntype QueryArgs = {\n offset?: number;\n limit?: number;\n where?: object;\n orderBy?: object[];\n};\n\nexport function prepareQueryOptions(\n args: QueryArgs,\n params: ResolvedOperationParams,\n isMany: boolean\n) {\n const where = {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n };\n\n const orderBy =\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy;\n\n const queryOptions: Omit<QueryArgs, \"orderBy\"> & { where: object; orderBy?: object } = {\n ...args,\n where,\n orderBy,\n };\n\n if (isMany) {\n queryOptions.limit =\n params.limit != null && args.limit != null\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit);\n }\n\n return queryOptions;\n}\n\nexport function separateInput(input: object, columns: Pick<Column, \"name\">[]) {\n const dbColumnsInput: Record<string, unknown> = {};\n const relationFieldsInput: [string, unknown][] = [];\n\n for (const [key, value] of Object.entries(input)) {\n if (columns.some((col) => col.name === key)) {\n dbColumnsInput[key] = value;\n } else {\n relationFieldsInput.push([key, value]);\n }\n }\n\n return { dbColumnsInput, relationFieldsInput };\n}\n\nexport async function insertRelayValue({\n results,\n client,\n relationInputs,\n relations,\n}: {\n results: Record<string, unknown>[];\n client: DbClient;\n relationInputs: [string, unknown][][];\n relations: RelationsRecord;\n}) {\n for (const index in results) {\n const result = results[index];\n const relationInput = relationInputs[index];\n if (!result || !relationInput?.length) continue;\n for (const [relationName, value] of relationInput) {\n const inputPayload = value as { set?: Record<string, unknown>[] };\n const itemsToSet = inputPayload.set;\n\n const relay = relations[relationName];\n if (!itemsToSet || !relay?.through || !relay.throughTable) continue;\n\n const { throughTable } = relay;\n\n const sourceToThroughMap = Object.fromEntries(\n relay.sourceColumns.map((v, i) => [v.name, relay.through!.source[i]!._.key])\n );\n const targetToThroughMap = Object.fromEntries(\n relay.targetColumns.map((v, i) => [v.name, relay.through!.target[i]!._.key])\n );\n\n const sourceFilters = relay.sourceColumns.map(\n (v) => [sourceToThroughMap[v.name], result[v.name]] as const\n );\n await client\n .delete(throughTable as never)\n .where(\n and(...sourceFilters.map(([key, val]) => eq(relay.throughTable![key as never], val)))\n );\n\n const insertRows = itemsToSet.map((item) => {\n const targetValues = Object.entries(item).map(([key, val]) => [\n targetToThroughMap[key],\n val,\n ]);\n return Object.fromEntries([...targetValues, ...sourceFilters]);\n });\n\n if (insertRows.length > 0) {\n await client.insert(throughTable as never).values(insertRows);\n }\n }\n }\n}\n\ninterface QueryDataType {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n}\n\nexport const replaceColumnValues = (\n tables: Record<string, ModelData>,\n tableName: string,\n tree: FieldTree,\n queryData: QueryDataType\n): QueryDataType | { columns: Record<string, boolean>; extras: { _: SQL } } => {\n if (Object.keys(tree).every((v) => v === \"__typename\")) {\n return {\n columns: {},\n extras: { _: sql`0` },\n };\n }\n const info = tables[tableName]!;\n const columns = info?.columns;\n if (columns) {\n queryData.columns = Object.fromEntries(\n Object.entries(tree).flatMap(([name, value]) =>\n value === true && columns.find((v) => v.name === name) ? [[name, true]] : []\n )\n );\n }\n if (queryData.with) {\n Object.entries(queryData.with).forEach(([name, query]) => {\n if (typeof tree[name] === \"object\") {\n replaceColumnValues(tables, (query as { _name: string })._name, tree[name], query);\n }\n });\n }\n return queryData;\n};\n\nexport const getReturning = (\n info: GraphQLResolveInfo,\n columns: Column[],\n primary?: boolean\n): {\n isRelay: boolean;\n queryFields: FieldTree;\n returning: Record<string, Column> | undefined;\n} => {\n const queryFields = getQueryFields(info);\n const isRelay = Object.keys(queryFields).some((v) => !columns.find((c) => c.name === v));\n const returningColumns = columns.filter(\n (v) => queryFields[v.name] || ((primary || isRelay) && v.primary)\n );\n if (!returningColumns.length) return { isRelay, queryFields, returning: undefined };\n const returning = Object.fromEntries(returningColumns.map((v) => [v.name, v]));\n return {\n isRelay,\n queryFields,\n returning,\n };\n};\n"]}
@@ -2,7 +2,7 @@ import { and, eq, sql } from "drizzle-orm";
2
2
  import { createWhereQuery } from "../libs/drizzle.js";
3
3
  import { checkPermissionsAndGetParams } from "../libs/permissions.js";
4
4
  export function defineModelObject(builder, generator, modelName, modelData, tables) {
5
- const { tableInfo, relations, columns, filterColumns, tableSingularAlias } = modelData;
5
+ const { relations, columns, filterColumns, tableSingularAlias } = modelData;
6
6
  const filterRelations = Object.entries(relations).filter(([, relay]) => tables[relay.targetTableName]);
7
7
  builder.drizzleObject(modelName, {
8
8
  name: tableSingularAlias,
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/definers/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAgC,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAItE,MAAM,UAAU,iBAAiB,CAC/B,OAA+C,EAC/C,SAAkC,EAClC,SAAiB,EACjB,SAAoB,EACpB,MAAiC;IAEjC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAEvF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAC7C,CAAC;IAEF,OAAO,CAAC,aAAa,CAAC,SAAkB,EAAE;QACxC,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,SAAS,GAAG,eAAe;iBAC9B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAE5F,MAAM,UAAU,GAAG,eAAe;iBAC/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;iBAC1D,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAC1B,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CACjE,CAAC;YACJ,MAAM,UAAU,GAAG,OAAO;iBACvB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;oBACf,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO;iBACZ,CAAC;aACZ,CAAC,CAAC;YAEL,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,CAA6E,EAC7E,SAAkC,EAClC,SAAiB,EACjB,KAAkB,EAClB,MAAiC;IAEjC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC9C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,eAAe,CAAE,CAAC;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IAE1E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAEhE,OAAO;QACL,SAAS;QACT,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;YACpB,QAAQ,EAAE,KAAK,CAAC,YAAY,KAAK,KAAK;YACtC,IAAI,EAAE;gBACJ,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC7B,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;aACzC;YACD,KAAK,EAAE,CACL,IAKC,EACD,GAAW,EACX,EAAE;gBACF,MAAM,MAAM,GAAG,4BAA4B,CACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;gBAEF,OAAO;oBACL,GAAG,IAAI;oBACP,KAAK,EAAE,eAAe;oBACtB,KAAK,EACH,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;wBACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;wBACpC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;oBAClC,KAAK,EAAE;wBACL,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBAClE;oBACD,OAAO,EACL,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;wBAC9C,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpE,CAAC,CAAC,MAAM,CAAC,OAAO;iBACrB,CAAC;YACJ,CAAC;SACO,CAAC;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,CAA6E,EAC7E,SAAkC,EAClC,SAAiB,EACjB,KAAkB,EAClB,MAAiC;IAEjC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,eAAe,CAAE,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAE/C,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAE5D,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,SAAS,OAAO;YACnB,CAAC,CAAC,KAAK,CAAC;gBACN,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC5C,UAAU,EAAE;oBACV,mBAAmB,EAAE,CAAC,IAAwB,EAAE,GAAW,EAAE,EAAE;wBAC7D,MAAM,MAAM,GAAG,4BAA4B,CACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;wBAEF,OAAO;4BACL,OAAO,EAAE,EAAE;4BACX,MAAM,EAAE;gCACN,CAAC,GAAG,SAAS,OAAO,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;oCACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACxC,OAAO,MAAM;yCACV,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAA,UAAU,EAAE,CAAC;yCAChC,IAAI,CAAC,KAAK,CAAC,WAAoB,CAAC;yCAChC,QAAQ,CACP,KAAK,CAAC,YAAqB,EAC3B,GAAG,CACD,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACtC,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAC9C,CACF,CACF;yCACA,KAAK,CACJ,GAAG,CACD,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACtC,EAAE,CACA,KAAK,CAAC,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,MAAM,EACtC,KAAK,CAAC,CAAC,CAAC,IAA0B,CAAC,CACpC,CACF,EACD,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE;wCAClC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qCACzD,CAAC,CACZ,CACF,CAAC;gCACN,CAAC;6BACF;yBACF,CAAC;oBACJ,CAAC;iBACF;aACO,CAAC;SACZ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,GAAG,SAAS,OAAO;YACnB,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE;gBACxB,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC5C,KAAK,EAAE,CAAC,IAAwC,EAAE,GAAW,EAAE,EAAE;oBAC/D,MAAM,MAAM,GAAG,4BAA4B,CACzC,eAAe,EACf,SAAS,EACT,GAAG,EACH,IAAI,EACJ,MAAM,CAAC,eAAe,CAAE,CACzB,CAAC;oBACF,OAAO,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE;wBACzC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;qBACzD,CAAC,CAAC;gBACd,CAAC;aACO,CAAC;SACZ,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { and, eq, sql, type AnyRelation, type Table } from \"drizzle-orm\";\r\nimport { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\r\n\r\nexport function defineModelObject<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { tableInfo, relations, columns, filterColumns, tableSingularAlias } = modelData;\r\n\r\n const filterRelations = Object.entries(relations).filter(\r\n ([, relay]) => tables[relay.targetTableName]\r\n );\r\n\r\n builder.drizzleObject(modelName as never, {\r\n name: tableSingularAlias,\r\n fields: (t) => {\r\n const relayList = filterRelations\r\n .filter(([name]) => filterColumns.includes(name))\r\n .map(([relayName, relay]) => createRelationField(t, generator, relayName, relay, tables));\r\n\r\n const relayCount = filterRelations\r\n .filter(([name]) => filterColumns.includes(`${name}Count`))\r\n .map(([relayName, relay]) =>\r\n createRelationCountField(t, generator, relayName, relay, tables)\r\n );\r\n const columnList = columns\r\n .filter(({ name }) => filterColumns.includes(name))\r\n .map((c) => [\r\n c.name,\r\n t.expose(c.name, {\r\n type: generator.getDataType(c),\r\n nullable: !c.notNull,\r\n } as never),\r\n ]);\r\n\r\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\r\n },\r\n });\r\n}\r\n\r\nfunction createRelationField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const { operations } = tables[targetModelName]!;\r\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\r\n\r\n return [\r\n relayName,\r\n t.relation(relayName, {\r\n nullable: relay.relationType === \"one\",\r\n args: {\r\n offset: t.arg({ type: \"Int\" }),\r\n limit: t.arg({ type: \"Int\" }),\r\n where: t.arg({ type: inputWhere }),\r\n orderBy: t.arg({ type: [inputOrderBy] }),\r\n },\r\n query: (\r\n args: {\r\n where?: object;\r\n offset?: number;\r\n limit?: number;\r\n orderBy?: object[];\r\n },\r\n ctx: object\r\n ) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n ...args,\r\n _name: targetModelName,\r\n limit:\r\n params.limit && args.limit\r\n ? Math.min(params.limit, args.limit)\r\n : (params.limit ?? args.limit),\r\n where: {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n },\r\n orderBy:\r\n args.orderBy && Object.keys(args.orderBy).length\r\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\r\n : params.orderBy,\r\n };\r\n },\r\n } as never),\r\n ];\r\n}\r\n\r\nfunction createRelationCountField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const operation = \"count\";\r\n const { operations } = tables[targetModelName]!;\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n\r\n if (relay.throughTable) {\r\n return [\r\n `${relayName}Count`,\r\n t.field({\r\n type: \"Int\",\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n extensions: {\r\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n columns: {},\r\n extras: {\r\n [`${relayName}Count`]: (table: Table) => {\r\n const client = generator.getClient(ctx);\r\n return client\r\n .select({ count: sql`count(*)` })\r\n .from(relay.targetTable as never)\r\n .leftJoin(\r\n relay.throughTable as never,\r\n and(\r\n ...relay.targetColumns.map((v, index) =>\r\n eq(relay.through!.target[index]!._.column, v)\r\n )\r\n )\r\n )\r\n .where(\r\n and(\r\n ...relay.sourceColumns.map((v, index) =>\r\n eq(\r\n relay.through!.source[index]!._.column,\r\n table[v.name as keyof typeof table]\r\n )\r\n ),\r\n createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never)\r\n )\r\n );\r\n },\r\n },\r\n };\r\n },\r\n },\r\n } as never),\r\n ];\r\n } else {\r\n return [\r\n `${relayName}Count`,\r\n t.relatedCount(relayName, {\r\n args: { where: t.arg({ type: inputWhere }) },\r\n where: (args: { limit?: number; where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n return createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n },\r\n } as never),\r\n ];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/definers/model.ts"],"names":[],"mappings":"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","sourcesContent":["import { and, eq, sql, type AnyRelation, type Table } from \"drizzle-orm\";\r\nimport { type ModelData, DrizzleGenerator } from \"../generator.js\";\r\nimport { createWhereQuery } from \"../libs/drizzle.js\";\r\nimport { checkPermissionsAndGetParams } from \"../libs/permissions.js\";\r\nimport type { SchemaTypes } from \"@pothos/core\";\r\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\r\n\r\nexport function defineModelObject<Types extends SchemaTypes>(\r\n builder: PothosSchemaTypes.SchemaBuilder<Types>,\r\n generator: DrizzleGenerator<Types>,\r\n modelName: string,\r\n modelData: ModelData,\r\n tables: Record<string, ModelData>\r\n) {\r\n const { relations, columns, filterColumns, tableSingularAlias } = modelData;\r\n\r\n const filterRelations = Object.entries(relations).filter(\r\n ([, relay]) => tables[relay.targetTableName]\r\n );\r\n\r\n builder.drizzleObject(modelName as never, {\r\n name: tableSingularAlias,\r\n fields: (t) => {\r\n const relayList = filterRelations\r\n .filter(([name]) => filterColumns.includes(name))\r\n .map(([relayName, relay]) => createRelationField(t, generator, relayName, relay, tables));\r\n\r\n const relayCount = filterRelations\r\n .filter(([name]) => filterColumns.includes(`${name}Count`))\r\n .map(([relayName, relay]) =>\r\n createRelationCountField(t, generator, relayName, relay, tables)\r\n );\r\n const columnList = columns\r\n .filter(({ name }) => filterColumns.includes(name))\r\n .map((c) => [\r\n c.name,\r\n t.expose(c.name, {\r\n type: generator.getDataType(c),\r\n nullable: !c.notNull,\r\n } as never),\r\n ]);\r\n\r\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\r\n },\r\n });\r\n}\r\n\r\nfunction createRelationField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const { operations } = tables[targetModelName]!;\r\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\r\n\r\n return [\r\n relayName,\r\n t.relation(relayName, {\r\n nullable: relay.relationType === \"one\",\r\n args: {\r\n offset: t.arg({ type: \"Int\" }),\r\n limit: t.arg({ type: \"Int\" }),\r\n where: t.arg({ type: inputWhere }),\r\n orderBy: t.arg({ type: [inputOrderBy] }),\r\n },\r\n query: (\r\n args: {\r\n where?: object;\r\n offset?: number;\r\n limit?: number;\r\n orderBy?: object[];\r\n },\r\n ctx: object\r\n ) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n ...args,\r\n _name: targetModelName,\r\n limit:\r\n params.limit && args.limit\r\n ? Math.min(params.limit, args.limit)\r\n : (params.limit ?? args.limit),\r\n where: {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n },\r\n orderBy:\r\n args.orderBy && Object.keys(args.orderBy).length\r\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\r\n : params.orderBy,\r\n };\r\n },\r\n } as never),\r\n ];\r\n}\r\n\r\nfunction createRelationCountField<Types extends SchemaTypes, Shape>(\r\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\r\n generator: DrizzleGenerator<Types>,\r\n relayName: string,\r\n relay: AnyRelation,\r\n tables: Record<string, ModelData>\r\n) {\r\n const targetModelName = relay.targetTableName;\r\n const operation = \"count\";\r\n const { operations } = tables[targetModelName]!;\r\n\r\n if (!operations.includes(operation)) return [];\r\n\r\n const inputWhere = generator.getInputWhere(targetModelName);\r\n\r\n if (relay.throughTable) {\r\n return [\r\n `${relayName}Count`,\r\n t.field({\r\n type: \"Int\",\r\n nullable: false,\r\n args: { where: t.arg({ type: inputWhere }) },\r\n extensions: {\r\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n\r\n return {\r\n columns: {},\r\n extras: {\r\n [`${relayName}Count`]: (table: Table) => {\r\n const client = generator.getClient(ctx);\r\n return client\r\n .select({ count: sql`count(*)` })\r\n .from(relay.targetTable as never)\r\n .leftJoin(\r\n relay.throughTable as never,\r\n and(\r\n ...relay.targetColumns.map((v, index) =>\r\n eq(relay.through!.target[index]!._.column, v)\r\n )\r\n )\r\n )\r\n .where(\r\n and(\r\n ...relay.sourceColumns.map((v, index) =>\r\n eq(\r\n relay.through!.source[index]!._.column,\r\n table[v.name as keyof typeof table]\r\n )\r\n ),\r\n createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never)\r\n )\r\n );\r\n },\r\n },\r\n };\r\n },\r\n },\r\n } as never),\r\n ];\r\n } else {\r\n return [\r\n `${relayName}Count`,\r\n t.relatedCount(relayName, {\r\n args: { where: t.arg({ type: inputWhere }) },\r\n where: (args: { limit?: number; where?: object }, ctx: object) => {\r\n const params = checkPermissionsAndGetParams(\r\n targetModelName,\r\n operation,\r\n ctx,\r\n null,\r\n tables[targetModelName]!\r\n );\r\n return createWhereQuery(relay.targetTable, {\r\n AND: [structuredClone(args.where), params.where].filter((v) => v),\r\n } as never);\r\n },\r\n } as never),\r\n ];\r\n }\r\n}\r\n"]}
@@ -3,7 +3,7 @@ import { getQueryFields } from "../libs/graphql.js";
3
3
  import { checkPermissionsAndGetParams } from "../libs/permissions.js";
4
4
  import { getReturning, insertRelayValue, replaceColumnValues, separateInput, } from "../libs/resolver-helpers.js";
5
5
  export function defineCreateOne(builder, generator, modelName, modelData) {
6
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
6
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
7
7
  const inputCreate = generator.getInputCreate(modelName);
8
8
  const operationName = operationAliases.createOne ?? `createOne${tableSingularAlias}`;
9
9
  builder.mutationType({
@@ -49,7 +49,7 @@ export function defineCreateOne(builder, generator, modelName, modelData) {
49
49
  });
50
50
  }
51
51
  export function defineCreateMany(builder, generator, modelName, modelData) {
52
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
52
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
53
53
  const inputCreate = generator.getInputCreate(modelName);
54
54
  const operationName = operationAliases.createMany ?? `createMany${tableSingularAlias}`;
55
55
  builder.mutationType({
@@ -102,7 +102,7 @@ export function defineCreateMany(builder, generator, modelName, modelData) {
102
102
  });
103
103
  }
104
104
  export function defineUpdate(builder, generator, modelName, modelData) {
105
- const { tableInfo, columns, table, relations, tableSingularAlias, operationAliases } = modelData;
105
+ const { columns, table, relations, tableSingularAlias, operationAliases } = modelData;
106
106
  const inputUpdate = generator.getInputUpdate(modelName);
107
107
  const inputWhere = generator.getInputWhere(modelName);
108
108
  const operationName = operationAliases.update ?? `update${tableSingularAlias}`;
@@ -157,7 +157,7 @@ export function defineUpdate(builder, generator, modelName, modelData) {
157
157
  });
158
158
  }
159
159
  export function defineDelete(builder, generator, modelName, modelData, tables) {
160
- const { tableInfo, columns, table, tableSingularAlias, operationAliases } = modelData;
160
+ const { columns, table, tableSingularAlias, operationAliases } = modelData;
161
161
  const inputWhere = generator.getInputWhere(modelName);
162
162
  const operationName = operationAliases.delete ?? `delete${tableSingularAlias}`;
163
163
  builder.mutationType({