pothos-drizzle-generator 0.1.21 → 0.1.22

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.
@@ -347,7 +347,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
347
347
  return client
348
348
  .insert(table)
349
349
  .values(combinedInputs)
350
- .then((v) => Array(v.rowCount ?? 0).fill({}));
350
+ .then((v) => Array(v.rowCount).fill({}));
351
351
  }
352
352
  return client.transaction(async (tx) => tx
353
353
  .insert(table)
@@ -400,7 +400,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
400
400
  .update(table)
401
401
  .set(combinedInput)
402
402
  .where(whereQuery)
403
- .then((v) => Array(v.rowCount ?? 0).fill({}));
403
+ .then((v) => Array(v.rowCount).fill({}));
404
404
  }
405
405
  return client.transaction(async (tx) => tx
406
406
  .update(table)
@@ -492,7 +492,7 @@ class PothosDrizzleGenerator extends core_1.BasePlugin {
492
492
  .getClient(ctx)
493
493
  .delete(table)
494
494
  .where(whereQuery)
495
- .then((v) => Array(v.rowCount ?? 0).fill({}));
495
+ .then((v) => Array(v.rowCount).fill({}));
496
496
  },
497
497
  }),
498
498
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"PothosDrizzleGenerator.js","sourceRoot":"","sources":["../../src/PothosDrizzleGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasePlugin, type BuildCache, type SchemaTypes } from \"@pothos/core\";\nimport {\n and,\n eq,\n sql,\n type AnyRelation,\n type EmptyRelations,\n type RelationsRecord,\n} from \"drizzle-orm\";\nimport {\n DrizzleGenerator,\n getReturning,\n replaceColumnValues,\n type ModelData,\n} from \"./generator.js\";\nimport { isOperation, OperationMutation, type OperationBasic } from \"./libs/operations.js\";\nimport { createWhereQuery, getQueryDepth, getQueryFields } from \"./libs/utils.js\";\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type { PgQueryResultHKT, PgTable } from \"drizzle-orm/pg-core\";\nimport type { PgAsyncRelationalQueryHKT } from \"drizzle-orm/pg-core/async/query.js\";\nimport type { PgAsyncTransaction } from \"drizzle-orm/pg-core/async/session.js\";\nimport type { RelationalQueryBuilder } from \"drizzle-orm/pg-core/query-builders/query\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\ntype OperationParams = {\n depthLimit?: number;\n limit?: number;\n where?: object;\n orderBy?: object;\n input?: object;\n};\n\nexport class PothosDrizzleGenerator<\n Types extends SchemaTypes,\n T extends object = object,\n> extends BasePlugin<Types, T> {\n generator: DrizzleGenerator<Types>;\n\n constructor(buildCache: BuildCache<Types>, name: keyof PothosSchemaTypes.Plugins<Types>) {\n super(buildCache, name);\n this.generator = new DrizzleGenerator(this.builder);\n }\n\n beforeBuild(): void {\n const generator = this.generator;\n const tables = generator.getTables();\n\n for (const [modelName, modelData] of Object.entries(tables)) {\n this.defineModelObject(modelName, modelData, tables);\n this.defineOperations(modelName, modelData, tables);\n }\n }\n\n private defineModelObject(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo, relations, columns, filterColumns } = modelData;\n const builder = this.builder;\n const generator = this.generator;\n\n const filterRelations = Object.entries(relations).filter(\n ([, relay]) => tables[relay.targetTableName]\n );\n\n builder.drizzleObject(modelName as never, {\n name: tableInfo.name,\n fields: (t) => {\n const relayList = filterRelations\n .filter(([name]) => filterColumns.includes(name))\n .map(([relayName, relay]) => this.createRelationField(t, relayName, relay, tables));\n\n const relayCount = filterRelations\n .filter(([name]) => filterColumns.includes(`${name}Count`))\n .map(([relayName, relay]) => this.createRelationCountField(t, relayName, relay, tables));\n const columnList = columns\n .filter(({ name }) => filterColumns.includes(name))\n .map((c) => [\n c.name,\n t.expose(c.name, {\n type: generator.getDataType(c),\n nullable: !c.notNull,\n } as never),\n ]);\n\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\n },\n });\n }\n\n private createRelationField<Shape>(\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\n relayName: string,\n relay: AnyRelation,\n tables: Record<string, ModelData>\n ) {\n const generator = this.generator;\n const targetModelName = relay.targetTableName;\n const { operations } = tables[targetModelName]!;\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\n\n if (!operations.includes(operation)) return [];\n\n const inputWhere = generator.getInputWhere(targetModelName);\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\n\n return [\n relayName,\n t.relation(relayName, {\n nullable: relay.relationType === \"one\",\n args: {\n offset: t.arg({ type: \"Int\" }),\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n query: (\n args: {\n where?: object;\n offset?: number;\n limit?: number;\n orderBy?: object[];\n },\n ctx: object\n ) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n\n return {\n ...args,\n _name: targetModelName,\n limit:\n params.limit && args.limit\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit),\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n };\n },\n } as never),\n ];\n }\n\n private createRelationCountField<Shape>(\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\n relayName: string,\n relay: AnyRelation,\n tables: Record<string, ModelData>\n ) {\n const generator = this.generator;\n const targetModelName = relay.targetTableName;\n const operation = \"count\";\n const { operations } = tables[targetModelName]!;\n\n if (!operations.includes(operation)) return [];\n\n const inputWhere = generator.getInputWhere(targetModelName);\n\n if (relay.throughTable) {\n return [\n `${relayName}Count`,\n t.field({\n type: \"Int\",\n nullable: false,\n args: { where: t.arg({ type: inputWhere }) },\n extensions: {\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n\n return {\n columns: {},\n extras: {\n [`${relayName}Count`]: (table: PgTable) => {\n const client: NodePgDatabase = generator.getClient(ctx);\n return client\n .select({ count: sql`count(*)` })\n .from(relay.targetTable as never)\n .leftJoin(\n relay.throughTable as never,\n and(\n ...relay.targetColumns.map((v, index) =>\n eq(relay.through!.target[index]!._.column, v)\n )\n )\n )\n .where(\n and(\n ...relay.sourceColumns.map((v, index) =>\n eq(\n relay.through!.source[index]!._.column,\n table[v.name as keyof typeof table]\n )\n ),\n createWhereQuery(relay.targetTable, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never)\n )\n );\n },\n },\n };\n },\n },\n } as never),\n ];\n } else {\n return [\n `${relayName}Count`,\n t.relatedCount(relayName, {\n args: { where: t.arg({ type: inputWhere }) },\n where: (args: { limit?: number; where?: object }, ctx: object) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n return createWhereQuery(relay.targetTable, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never);\n },\n } as never),\n ];\n }\n }\n\n private defineOperations(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { operations } = modelData;\n if (operations.includes(\"findMany\")) {\n this.defineFindMany(modelName, modelData, tables);\n }\n if (operations.includes(\"findFirst\")) {\n this.defineFindFirst(modelName, modelData, tables);\n }\n if (operations.includes(\"count\")) {\n this.defineCount(modelName, modelData);\n }\n if (operations.includes(\"createOne\")) {\n this.defineCreateOne(modelName, modelData);\n }\n if (operations.includes(\"createMany\")) {\n this.defineCreateMany(modelName, modelData);\n }\n if (operations.includes(\"update\")) {\n this.defineUpdate(modelName, modelData);\n }\n if (operations.includes(\"delete\")) {\n this.defineDelete(modelName, modelData, tables);\n }\n }\n\n private checkPermissionsAndGetParams(\n modelName: string,\n operation: (typeof OperationBasic)[number],\n ctx: object,\n info: GraphQLResolveInfo | null,\n modelData: ModelData\n ): OperationParams {\n const { executable, depthLimit, limit, where, orderBy, inputData } = modelData;\n\n if (executable?.({ modelName, ctx, operation }) === false) {\n throw new Error(\"No permission\");\n }\n\n const params: OperationParams = {\n depthLimit: depthLimit?.({ modelName, ctx, operation }),\n limit: limit?.({ modelName, ctx, operation }),\n where: where?.({ modelName, ctx, operation }),\n orderBy: orderBy?.({ modelName, ctx, operation }),\n input: isOperation(OperationMutation, operation)\n ? inputData?.({ modelName, ctx, operation })\n : undefined,\n };\n\n if (info && params.depthLimit !== undefined && getQueryDepth(info) > params.depthLimit) {\n throw new Error(\"Depth limit exceeded\");\n }\n\n return params;\n }\n\n private defineFindMany(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n const inputOrderBy = this.generator.getInputOrderBy(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`findMany${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: {\n offset: t.arg({ type: \"Int\" }),\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { limit?: number; where: object; orderBy?: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"findMany\",\n ctx,\n info,\n modelData\n );\n\n return this.generator.getQueryTable(ctx, modelName).findMany(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({\n ...args,\n limit:\n params.limit && args.limit\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit),\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n })\n ) as never\n );\n },\n } as never),\n }),\n });\n }\n\n private defineFindFirst(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n const inputOrderBy = this.generator.getInputOrderBy(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`findFirst${tableInfo.name}`]: t.drizzleField({\n type: modelName,\n args: {\n offset: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { where: object; orderBy?: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"findFirst\",\n ctx,\n info,\n modelData\n );\n\n return this.generator.getQueryTable(ctx, modelName).findFirst(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({\n ...args,\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n })\n ) as never\n );\n },\n } as never),\n }),\n });\n }\n\n private defineCount(modelName: string, modelData: ModelData) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`count${tableInfo.name}`]: t.field({\n type: \"Int\",\n nullable: false,\n args: {\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n },\n resolve: async (\n _parent: unknown,\n args: { where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"count\",\n ctx,\n info,\n modelData\n );\n\n return (\n this.generator.getClient(ctx).query[modelName as never] as RelationalQueryBuilder<\n never,\n never,\n PgAsyncRelationalQueryHKT\n >\n )\n .findFirst({\n columns: {},\n extras: { _count: () => sql`count(*) ` },\n ...args,\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n } as never)\n .then((v: unknown) => (v as { _count: number })._count);\n },\n } as never),\n }),\n });\n }\n\n private defineCreateOne(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputCreate = this.generator.getInputCreate(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`createOne${tableInfo.name}`]: t.drizzleField({\n type: modelName,\n nullable: false,\n args: { input: t.arg({ type: inputCreate, required: true }) },\n resolve: async (\n query: (selection: unknown) => unknown,\n _parent: unknown,\n args: { input: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"createOne\",\n ctx,\n info,\n modelData\n );\n const combinedInput = { ...args.input, ...params.input };\n const dbColumnsInput = Object.fromEntries(\n Object.entries(combinedInput).filter(([key]) =>\n columns.some((col) => col.name === key)\n )\n );\n const relationFieldsInput = Object.entries(combinedInput).filter(([key]) =>\n columns.every((col) => col.name !== key)\n );\n const hasRelationInput = relationFieldsInput.length > 0;\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n\n if (!isRelay) {\n query({});\n }\n\n if (!returning) {\n return client\n .insert(table as never)\n .values(dbColumnsInput as never)\n .then(() => ({}));\n }\n\n return client.transaction(async (tx) =>\n tx\n .insert(table as never)\n .values(dbColumnsInput as never)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: [relationFieldsInput],\n relations,\n });\n }\n return results[0];\n })\n );\n },\n } as never),\n }),\n });\n }\n private defineCreateMany(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputCreate = this.generator.getInputCreate(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`createMany${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: { input: t.arg({ type: [inputCreate], required: true }) },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { input: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"createMany\",\n ctx,\n info,\n modelData\n );\n if (!args.input.length) return [];\n const combinedInputs = args.input.map((v) => ({\n ...v,\n ...params.input,\n }));\n const relationFieldsInputs = combinedInputs.map((v) =>\n Object.entries(v).filter(([key]) => columns.every((col) => col.name !== key))\n );\n\n const hasRelationInput = relationFieldsInputs.some((v) => v.length > 0);\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n\n if (!isRelay) {\n query({});\n }\n\n if (!returning) {\n return client\n .insert(table as never)\n .values(combinedInputs)\n .then((v) => Array(v.rowCount ?? 0).fill({}));\n }\n return client.transaction(async (tx) =>\n tx\n .insert(table as never)\n .values(combinedInputs)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: relationFieldsInputs,\n relations,\n });\n }\n return results;\n })\n );\n },\n } as never),\n }),\n });\n }\n private defineUpdate(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputUpdate = this.generator.getInputUpdate(modelName);\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`update${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: {\n input: t.arg({ type: inputUpdate, required: true }),\n where: t.arg({ type: inputWhere }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { input: object; where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"update\",\n ctx,\n info,\n modelData\n );\n const combinedInput = { ...args.input, ...params.input };\n const relationFieldsInput = Object.entries(combinedInput).filter(([key]) =>\n columns.every((col) => col.name !== key)\n );\n const hasRelationInput = relationFieldsInput.length > 0;\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n\n if (!isRelay) {\n query({});\n }\n const whereQuery = createWhereQuery(table, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never);\n\n if (!returning) {\n return client\n .update(table as never)\n .set(combinedInput)\n .where(whereQuery)\n .then((v) => Array(v.rowCount ?? 0).fill({}));\n }\n\n return client.transaction(async (tx) =>\n tx\n .update(table as never)\n .set(combinedInput)\n .where(whereQuery)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: Array(results.length).fill(relationFieldsInput),\n relations,\n });\n }\n return results;\n })\n );\n },\n } as never),\n }),\n });\n }\n private async insertRelayValue<TQueryResult extends PgQueryResultHKT>({\n results,\n client,\n relationInputs,\n relations,\n }: {\n results: Record<string, unknown>[];\n client: PgAsyncTransaction<TQueryResult, EmptyRelations>;\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 private defineDelete(modelName: string, modelData: ModelData, tables: Record<string, ModelData>) {\n const { tableInfo, columns, table } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`delete${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: { where: t.arg({ type: inputWhere }) },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"delete\",\n ctx,\n info,\n modelData\n );\n const { returning, isRelay } = getReturning(info, columns);\n const whereCondition = {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n };\n\n if (isRelay) {\n const result = await this.generator\n .getQueryTable(ctx, modelName)\n .findMany(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({ ...args, where: whereCondition })\n ) as never\n );\n await this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(createWhereQuery(table, whereCondition as never));\n return result;\n }\n\n query({});\n const whereQuery = createWhereQuery(table, whereCondition as never);\n\n return returning\n ? this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(whereQuery)\n .returning(returning)\n : this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(whereQuery)\n .then((v) => Array(v.rowCount ?? 0).fill({}));\n },\n } as never),\n }),\n });\n }\n}\n"]}
1
+ {"version":3,"file":"PothosDrizzleGenerator.js","sourceRoot":"","sources":["../../src/PothosDrizzleGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import { BasePlugin, type BuildCache, type SchemaTypes } from \"@pothos/core\";\nimport {\n and,\n eq,\n sql,\n type AnyRelation,\n type EmptyRelations,\n type RelationsRecord,\n} from \"drizzle-orm\";\nimport {\n DrizzleGenerator,\n getReturning,\n replaceColumnValues,\n type ModelData,\n} from \"./generator.js\";\nimport { isOperation, OperationMutation, type OperationBasic } from \"./libs/operations.js\";\nimport { createWhereQuery, getQueryDepth, getQueryFields } from \"./libs/utils.js\";\nimport type { DrizzleObjectFieldBuilder } from \"@pothos/plugin-drizzle\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type { PgQueryResultHKT, PgTable, PgTransaction } from \"drizzle-orm/pg-core\";\nimport type { RelationalQueryBuilder } from \"drizzle-orm/pg-core/query-builders/query\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\ntype OperationParams = {\n depthLimit?: number;\n limit?: number;\n where?: object;\n orderBy?: object;\n input?: object;\n};\n\nexport class PothosDrizzleGenerator<\n Types extends SchemaTypes,\n T extends object = object,\n> extends BasePlugin<Types, T> {\n generator: DrizzleGenerator<Types>;\n\n constructor(buildCache: BuildCache<Types>, name: keyof PothosSchemaTypes.Plugins<Types>) {\n super(buildCache, name);\n this.generator = new DrizzleGenerator(this.builder);\n }\n\n beforeBuild(): void {\n const generator = this.generator;\n const tables = generator.getTables();\n\n for (const [modelName, modelData] of Object.entries(tables)) {\n this.defineModelObject(modelName, modelData, tables);\n this.defineOperations(modelName, modelData, tables);\n }\n }\n\n private defineModelObject(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo, relations, columns, filterColumns } = modelData;\n const builder = this.builder;\n const generator = this.generator;\n\n const filterRelations = Object.entries(relations).filter(\n ([, relay]) => tables[relay.targetTableName]\n );\n\n builder.drizzleObject(modelName as never, {\n name: tableInfo.name,\n fields: (t) => {\n const relayList = filterRelations\n .filter(([name]) => filterColumns.includes(name))\n .map(([relayName, relay]) => this.createRelationField(t, relayName, relay, tables));\n\n const relayCount = filterRelations\n .filter(([name]) => filterColumns.includes(`${name}Count`))\n .map(([relayName, relay]) => this.createRelationCountField(t, relayName, relay, tables));\n const columnList = columns\n .filter(({ name }) => filterColumns.includes(name))\n .map((c) => [\n c.name,\n t.expose(c.name, {\n type: generator.getDataType(c),\n nullable: !c.notNull,\n } as never),\n ]);\n\n return Object.fromEntries([...relayCount, ...relayList, ...columnList]);\n },\n });\n }\n\n private createRelationField<Shape>(\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\n relayName: string,\n relay: AnyRelation,\n tables: Record<string, ModelData>\n ) {\n const generator = this.generator;\n const targetModelName = relay.targetTableName;\n const { operations } = tables[targetModelName]!;\n const operation = relay.relationType === \"one\" ? \"findFirst\" : \"findMany\";\n\n if (!operations.includes(operation)) return [];\n\n const inputWhere = generator.getInputWhere(targetModelName);\n const inputOrderBy = generator.getInputOrderBy(targetModelName);\n\n return [\n relayName,\n t.relation(relayName, {\n nullable: relay.relationType === \"one\",\n args: {\n offset: t.arg({ type: \"Int\" }),\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n query: (\n args: {\n where?: object;\n offset?: number;\n limit?: number;\n orderBy?: object[];\n },\n ctx: object\n ) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n\n return {\n ...args,\n _name: targetModelName,\n limit:\n params.limit && args.limit\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit),\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n };\n },\n } as never),\n ];\n }\n\n private createRelationCountField<Shape>(\n t: DrizzleObjectFieldBuilder<Types, Types[\"DrizzleRelations\"][string], Shape>,\n relayName: string,\n relay: AnyRelation,\n tables: Record<string, ModelData>\n ) {\n const generator = this.generator;\n const targetModelName = relay.targetTableName;\n const operation = \"count\";\n const { operations } = tables[targetModelName]!;\n\n if (!operations.includes(operation)) return [];\n\n const inputWhere = generator.getInputWhere(targetModelName);\n\n if (relay.throughTable) {\n return [\n `${relayName}Count`,\n t.field({\n type: \"Int\",\n nullable: false,\n args: { where: t.arg({ type: inputWhere }) },\n extensions: {\n pothosDrizzleSelect: (args: { where?: object }, ctx: object) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n\n return {\n columns: {},\n extras: {\n [`${relayName}Count`]: (table: PgTable) => {\n const client: NodePgDatabase = generator.getClient(ctx);\n return client\n .select({ count: sql`count(*)` })\n .from(relay.targetTable as never)\n .leftJoin(\n relay.throughTable as never,\n and(\n ...relay.targetColumns.map((v, index) =>\n eq(relay.through!.target[index]!._.column, v)\n )\n )\n )\n .where(\n and(\n ...relay.sourceColumns.map((v, index) =>\n eq(\n relay.through!.source[index]!._.column,\n table[v.name as keyof typeof table]\n )\n ),\n createWhereQuery(relay.targetTable, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never)\n )\n );\n },\n },\n };\n },\n },\n } as never),\n ];\n } else {\n return [\n `${relayName}Count`,\n t.relatedCount(relayName, {\n args: { where: t.arg({ type: inputWhere }) },\n where: (args: { limit?: number; where?: object }, ctx: object) => {\n const params = this.checkPermissionsAndGetParams(\n targetModelName,\n operation,\n ctx,\n null,\n tables[targetModelName]!\n );\n return createWhereQuery(relay.targetTable, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never);\n },\n } as never),\n ];\n }\n }\n\n private defineOperations(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { operations } = modelData;\n if (operations.includes(\"findMany\")) {\n this.defineFindMany(modelName, modelData, tables);\n }\n if (operations.includes(\"findFirst\")) {\n this.defineFindFirst(modelName, modelData, tables);\n }\n if (operations.includes(\"count\")) {\n this.defineCount(modelName, modelData);\n }\n if (operations.includes(\"createOne\")) {\n this.defineCreateOne(modelName, modelData);\n }\n if (operations.includes(\"createMany\")) {\n this.defineCreateMany(modelName, modelData);\n }\n if (operations.includes(\"update\")) {\n this.defineUpdate(modelName, modelData);\n }\n if (operations.includes(\"delete\")) {\n this.defineDelete(modelName, modelData, tables);\n }\n }\n\n private checkPermissionsAndGetParams(\n modelName: string,\n operation: (typeof OperationBasic)[number],\n ctx: object,\n info: GraphQLResolveInfo | null,\n modelData: ModelData\n ): OperationParams {\n const { executable, depthLimit, limit, where, orderBy, inputData } = modelData;\n\n if (executable?.({ modelName, ctx, operation }) === false) {\n throw new Error(\"No permission\");\n }\n\n const params: OperationParams = {\n depthLimit: depthLimit?.({ modelName, ctx, operation }),\n limit: limit?.({ modelName, ctx, operation }),\n where: where?.({ modelName, ctx, operation }),\n orderBy: orderBy?.({ modelName, ctx, operation }),\n input: isOperation(OperationMutation, operation)\n ? inputData?.({ modelName, ctx, operation })\n : undefined,\n };\n\n if (info && params.depthLimit !== undefined && getQueryDepth(info) > params.depthLimit) {\n throw new Error(\"Depth limit exceeded\");\n }\n\n return params;\n }\n\n private defineFindMany(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n const inputOrderBy = this.generator.getInputOrderBy(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`findMany${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: {\n offset: t.arg({ type: \"Int\" }),\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { limit?: number; where: object; orderBy?: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"findMany\",\n ctx,\n info,\n modelData\n );\n\n return this.generator.getQueryTable(ctx, modelName).findMany(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({\n ...args,\n limit:\n params.limit && args.limit\n ? Math.min(params.limit, args.limit)\n : (params.limit ?? args.limit),\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n })\n ) as never\n );\n },\n } as never),\n }),\n });\n }\n\n private defineFindFirst(\n modelName: string,\n modelData: ModelData,\n tables: Record<string, ModelData>\n ) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n const inputOrderBy = this.generator.getInputOrderBy(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`findFirst${tableInfo.name}`]: t.drizzleField({\n type: modelName,\n args: {\n offset: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n orderBy: t.arg({ type: [inputOrderBy] }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { where: object; orderBy?: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"findFirst\",\n ctx,\n info,\n modelData\n );\n\n return this.generator.getQueryTable(ctx, modelName).findFirst(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({\n ...args,\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n orderBy:\n args.orderBy && Object.keys(args.orderBy).length\n ? Object.fromEntries(args.orderBy.flatMap((v) => Object.entries(v)))\n : params.orderBy,\n })\n ) as never\n );\n },\n } as never),\n }),\n });\n }\n\n private defineCount(modelName: string, modelData: ModelData) {\n const { tableInfo } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.queryType({\n fields: (t) => ({\n [`count${tableInfo.name}`]: t.field({\n type: \"Int\",\n nullable: false,\n args: {\n limit: t.arg({ type: \"Int\" }),\n where: t.arg({ type: inputWhere }),\n },\n resolve: async (\n _parent: unknown,\n args: { where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"count\",\n ctx,\n info,\n modelData\n );\n\n return (\n this.generator.getClient(ctx).query[modelName as never] as RelationalQueryBuilder<\n never,\n never\n >\n )\n .findFirst({\n columns: {},\n extras: { _count: () => sql`count(*) ` },\n ...args,\n where: {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n },\n } as never)\n .then((v: unknown) => (v as { _count: number })._count);\n },\n } as never),\n }),\n });\n }\n\n private defineCreateOne(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputCreate = this.generator.getInputCreate(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`createOne${tableInfo.name}`]: t.drizzleField({\n type: modelName,\n nullable: false,\n args: { input: t.arg({ type: inputCreate, required: true }) },\n resolve: async (\n query: (selection: unknown) => unknown,\n _parent: unknown,\n args: { input: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"createOne\",\n ctx,\n info,\n modelData\n );\n const combinedInput = { ...args.input, ...params.input };\n const dbColumnsInput = Object.fromEntries(\n Object.entries(combinedInput).filter(([key]) =>\n columns.some((col) => col.name === key)\n )\n );\n const relationFieldsInput = Object.entries(combinedInput).filter(([key]) =>\n columns.every((col) => col.name !== key)\n );\n const hasRelationInput = relationFieldsInput.length > 0;\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n if (!isRelay) {\n query({});\n }\n if (!returning) {\n return client\n .insert(table as never)\n .values(dbColumnsInput as never)\n .then(() => ({}));\n }\n\n return client.transaction(async (tx) =>\n tx\n .insert(table as never)\n .values(dbColumnsInput as never)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: [relationFieldsInput],\n relations,\n });\n }\n return results[0];\n })\n );\n },\n } as never),\n }),\n });\n }\n private defineCreateMany(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputCreate = this.generator.getInputCreate(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`createMany${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: { input: t.arg({ type: [inputCreate], required: true }) },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { input: object[] },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"createMany\",\n ctx,\n info,\n modelData\n );\n if (!args.input.length) return [];\n const combinedInputs = args.input.map((v) => ({\n ...v,\n ...params.input,\n }));\n const relationFieldsInputs = combinedInputs.map((v) =>\n Object.entries(v).filter(([key]) => columns.every((col) => col.name !== key))\n );\n\n const hasRelationInput = relationFieldsInputs.some((v) => v.length > 0);\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n\n if (!isRelay) {\n query({});\n }\n if (!returning) {\n return client\n .insert(table as never)\n .values(combinedInputs)\n .then((v) => Array(v.rowCount!).fill({}));\n }\n return client.transaction(async (tx) =>\n tx\n .insert(table as never)\n .values(combinedInputs)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: relationFieldsInputs,\n relations,\n });\n }\n return results;\n })\n );\n },\n } as never),\n }),\n });\n }\n private defineUpdate(modelName: string, modelData: ModelData) {\n const { tableInfo, columns, table, relations } = modelData;\n const inputUpdate = this.generator.getInputUpdate(modelName);\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`update${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: {\n input: t.arg({ type: inputUpdate, required: true }),\n where: t.arg({ type: inputWhere }),\n },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { input: object; where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const client = this.generator.getClient(ctx);\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"update\",\n ctx,\n info,\n modelData\n );\n const combinedInput = { ...args.input, ...params.input };\n const relationFieldsInput = Object.entries(combinedInput).filter(([key]) =>\n columns.every((col) => col.name !== key)\n );\n const hasRelationInput = relationFieldsInput.length > 0;\n const { returning, isRelay } = getReturning(info, columns, hasRelationInput);\n\n if (!isRelay) {\n query({});\n }\n const whereQuery = createWhereQuery(table, {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n } as never);\n\n if (!returning) {\n return client\n .update(table as never)\n .set(combinedInput)\n .where(whereQuery)\n .then((v) => Array(v.rowCount!).fill({}));\n }\n\n return client.transaction(async (tx) =>\n tx\n .update(table as never)\n .set(combinedInput)\n .where(whereQuery)\n .returning(returning)\n .then(async (results) => {\n if (hasRelationInput) {\n await this.insertRelayValue({\n results,\n client: tx,\n relationInputs: Array(results.length).fill(relationFieldsInput),\n relations,\n });\n }\n return results;\n })\n );\n },\n } as never),\n }),\n });\n }\n private async insertRelayValue<TQueryResult extends PgQueryResultHKT>({\n results,\n client,\n relationInputs,\n relations,\n }: {\n results: Record<string, unknown>[];\n client: PgTransaction<TQueryResult, EmptyRelations>;\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 private defineDelete(modelName: string, modelData: ModelData, tables: Record<string, ModelData>) {\n const { tableInfo, columns, table } = modelData;\n const inputWhere = this.generator.getInputWhere(modelName);\n\n this.builder.mutationType({\n fields: (t) => ({\n [`delete${tableInfo.name}`]: t.drizzleField({\n type: [modelName],\n nullable: false,\n args: { where: t.arg({ type: inputWhere }) },\n resolve: async (\n query: (selection: unknown) => object,\n _parent: unknown,\n args: { where?: object },\n ctx: object,\n info: GraphQLResolveInfo\n ) => {\n const params = this.checkPermissionsAndGetParams(\n modelName,\n \"delete\",\n ctx,\n info,\n modelData\n );\n const { returning, isRelay } = getReturning(info, columns);\n const whereCondition = {\n AND: [structuredClone(args.where), params.where].filter((v) => v),\n };\n\n if (isRelay) {\n const result = await this.generator\n .getQueryTable(ctx, modelName)\n .findMany(\n replaceColumnValues(\n tables,\n modelName,\n getQueryFields(info),\n query({ ...args, where: whereCondition })\n ) as never\n );\n await this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(createWhereQuery(table, whereCondition as never));\n return result;\n }\n\n query({});\n const whereQuery = createWhereQuery(table, whereCondition as never);\n\n return returning\n ? this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(whereQuery)\n .returning(returning)\n : this.generator\n .getClient(ctx)\n .delete(table as never)\n .where(whereQuery)\n .then((v) => Array(v.rowCount!).fill({}));\n },\n } as never),\n }),\n });\n }\n}\n"]}
@@ -247,7 +247,6 @@ class DrizzleGenerator {
247
247
  ["Bytes", graphql_scalars_1.ByteResolver],
248
248
  ["DateTime", graphql_scalars_1.DateTimeResolver],
249
249
  ["Json", graphql_scalars_1.JSONResolver],
250
- ["Decimal", graphql_scalars_1.HexadecimalResolver],
251
250
  ];
252
251
  for (const [scalarName, scalarResolver] of scalars) {
253
252
  if (!builder.configStore.hasConfig(scalarName)) {
@@ -263,37 +262,42 @@ class DrizzleGenerator {
263
262
  }
264
263
  getDataType(column) {
265
264
  const isArray = column.dataType.split(" ")[0] === "array";
266
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
267
- const c = isArray ? column.baseColumn : column;
265
+ const c = isArray ? (column.baseColumn ?? column) : column;
268
266
  const types = c.dataType.split(" ");
267
+ if (types[0] === "string" && types[1] !== "enum") {
268
+ return isArray ? ["String"] : "String";
269
+ }
270
+ if (types[0] === "bigint") {
271
+ return isArray ? ["BigInt"] : "BigInt";
272
+ }
269
273
  switch (types[1] ?? types[0]) {
270
274
  case "enum": {
271
275
  const sqlType = c.getSQLType();
272
276
  const e = this.enums[sqlType];
273
277
  if (!e) {
274
278
  this.enums[sqlType] = this.builder.enumType(sqlType, {
275
- values: c.enumValues ?? [],
279
+ values: c.enumValues,
276
280
  });
277
281
  }
278
282
  return isArray ? [sqlType] : sqlType;
279
283
  }
284
+ case "buffer":
285
+ return isArray ? ["Bytes"] : "Bytes";
280
286
  case "json":
281
287
  return isArray ? ["Json"] : "Json";
282
288
  case "date":
283
289
  return isArray ? ["DateTime"] : "DateTime";
284
- case "datetime":
285
- return isArray ? ["DateTime"] : "DateTime";
286
290
  case "boolean":
287
291
  return isArray ? ["Boolean"] : "Boolean";
292
+ case "point":
288
293
  case "double":
289
- case "float":
290
- case "udouble":
291
- case "ufloat":
292
294
  return isArray ? ["Float"] : "Float";
293
295
  }
296
+ if (types[1]?.startsWith("int")) {
297
+ return isArray ? ["Int"] : "Int";
298
+ }
294
299
  const type = isArray ? types[1] : types[0];
295
300
  const scalerMap = {
296
- bigint: "BigInt",
297
301
  number: "Float",
298
302
  string: "String",
299
303
  };
@@ -328,14 +332,15 @@ const getReturning = (info, columns, primary) => {
328
332
  const queryFields = (0, utils_js_1.getQueryFields)(info);
329
333
  const isRelay = Object.keys(queryFields).some((v) => !columns.find((c) => c.name === v));
330
334
  const returnFields = columns
331
- .filter((v) => queryFields[v.name] || (primary && v.primary))
335
+ .filter((v) => queryFields[v.name] || ((primary || isRelay) && v.primary))
332
336
  .map((v) => [v.name, v]);
333
337
  if (!returnFields.length)
334
338
  return { isRelay, queryFields, returning: undefined };
339
+ const returning = Object.fromEntries(returnFields);
335
340
  return {
336
341
  isRelay,
337
342
  queryFields,
338
- returning: Object.fromEntries(columns.filter((v) => queryFields[v.name]).map((v) => [v.name, v])),
343
+ returning: Object.fromEntries(columns.filter((v) => returning[v.name]).map((v) => [v.name, v])),
339
344
  };
340
345
  };
341
346
  exports.getReturning = getReturning;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isTable,\n sql,\n type AnyRelations,\n type RelationsRecord,\n type SchemaEntry,\n} from \"drizzle-orm\";\nimport {\n BigIntResolver,\n ByteResolver,\n DateResolver,\n DateTimeResolver,\n HexadecimalResolver,\n JSONResolver,\n} from \"graphql-scalars\";\nimport { expandOperations, OperationBasic } from \"./libs/operations.js\";\nimport { createInputOperator, getQueryFields, type FieldTree } from \"./libs/utils.js\";\nimport type { SchemaTypes } from \"@pothos/core\";\nimport type { DrizzleClient } from \"@pothos/plugin-drizzle\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type { PgArray, PgColumn, PgTable, getTableConfig } from \"drizzle-orm/pg-core\";\nimport type { RelationalQueryBuilder } from \"drizzle-orm/pg-core/query-builders/query\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\nexport type ModelData = {\n table: SchemaEntry;\n operations: (typeof OperationBasic)[number][];\n filterColumns: string[];\n columns: PgColumn[];\n primaryColumns: PgColumn[];\n inputColumns: PgColumn[];\n tableInfo: ReturnType<typeof getTableConfig>;\n relations: RelationsRecord;\n executable?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => boolean | undefined)\n | undefined;\n limit?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => number | undefined)\n | undefined;\n orderBy?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n where?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n inputData?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n depthLimit?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => number | undefined)\n | undefined;\n};\n\ninterface QueryDataType {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n}\n\nexport class DrizzleGenerator<Types extends SchemaTypes> {\n enums: Record<string, PothosSchemaTypes.EnumRef<Types, unknown>> = {};\n inputOperators: Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>> = {};\n inputType: Record<string, Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>>> = {};\n tables?: Record<string, ModelData>;\n\n builder: PothosSchemaTypes.SchemaBuilder<Types>;\n constructor(builder: PothosSchemaTypes.SchemaBuilder<Types>) {\n this.builder = builder;\n this.createInputType();\n }\n getTableConfig() {\n const drizzleOption = this.builder.options.drizzle;\n return drizzleOption.getTableConfig as (\n param: Parameters<typeof getTableConfig>[0] | SchemaEntry\n ) => ReturnType<typeof getTableConfig>;\n }\n createTableInfo(): Record<string, ModelData> {\n const options = this.builder.options.pothosDrizzleGenerator;\n const getConfig = this.getTableConfig();\n const relations = this.getRelations();\n const tables = Object.values(relations)\n .filter((t) => isTable(t.table))\n .map(({ name: modelName, table, relations }) => {\n const tableInfo = getConfig(table as PgTable);\n const allOptions = options?.all;\n const modelOptions = options?.models?.[modelName];\n const columns = tableInfo.columns;\n const primaryColumns = Array.from(\n new Set([\n ...tableInfo.primaryKeys.flatMap((v) => v.columns),\n ...columns.filter((v) => v.primary),\n ])\n );\n\n //Operations\n const operationValue = (modelOptions?.operations ?? allOptions?.operations)?.({\n modelName,\n });\n const operationIncludes = expandOperations(operationValue?.include ?? OperationBasic);\n const operationExcludes = expandOperations(operationValue?.exclude ?? []);\n const operations = operationIncludes.filter((v) => !operationExcludes.includes(v));\n // Columns filter\n const columnValue = (modelOptions?.fields ?? allOptions?.fields)?.({\n modelName,\n });\n const include = (columnValue?.include as undefined | string[]) ?? [\n ...columns.map((c) => c.name),\n ...Object.keys(relations),\n ...Object.keys(relations).map((v) => `${v}Count`),\n ];\n const exclude = (columnValue?.exclude as undefined | string[]) ?? [];\n const filterColumns = include.filter((name) => !exclude.includes(name));\n\n // Input columns filter\n const inputFieldValue = (modelOptions?.inputFields ?? allOptions?.inputFields)?.({\n modelName,\n });\n const includeInput = inputFieldValue?.include ?? columns.map((c) => c.name);\n const excludeInput = inputFieldValue?.exclude ?? [];\n const filterInputColumns = includeInput.filter((name) => !excludeInput.includes(name));\n return [\n modelName,\n {\n table,\n relations,\n columns,\n filterColumns,\n primaryColumns,\n operations,\n inputColumns: columns.filter((c) => filterInputColumns.includes(c.name)),\n tableInfo,\n executable: modelOptions?.executable ?? allOptions?.executable,\n limit: modelOptions?.limit ?? allOptions?.limit,\n orderBy: modelOptions?.orderBy ?? allOptions?.orderBy,\n where: modelOptions?.where ?? allOptions?.where,\n inputData: modelOptions?.inputData ?? allOptions?.inputData,\n depthLimit: modelOptions?.depthLimit ?? allOptions?.depthLimit,\n },\n ] as const;\n });\n const modelNames = tables.map(([name]) => name);\n // Model filter\n const include = options?.use?.include ?? modelNames;\n const exclude = options?.use?.exclude ?? [];\n const filterTables = include.filter((name) => !exclude.includes(name));\n return Object.fromEntries(tables.filter(([name]) => filterTables.includes(name)));\n }\n getClient(ctx: object) {\n const options = this.builder.options;\n const drizzleOption = options.drizzle;\n const client =\n drizzleOption.client instanceof Function ? drizzleOption.client(ctx) : drizzleOption.client;\n return client as NodePgDatabase;\n }\n getQueryTable(ctx: object, modelName: string) {\n return this.getClient(ctx).query[modelName as never] as RelationalQueryBuilder<never, never>;\n }\n getRelations(): AnyRelations {\n const drizzleOption = this.builder.options.drizzle;\n const client = drizzleOption.client as DrizzleClient;\n return drizzleOption.relations ?? client._.relations;\n }\n getTables() {\n if (this.tables) return this.tables;\n const tables = this.createTableInfo();\n this.tables = tables;\n return tables;\n }\n getTable(table: SchemaEntry) {\n const result = Object.values(this.getTables()).find((v) => v.table === table);\n return result;\n }\n getInputType(\n modelName: string,\n type: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: PothosSchemaTypes.InputObjectTypeOptions<any, any>\n ) {\n if (!this.inputType[modelName]) this.inputType[modelName] = {};\n if (this.inputType[modelName][type]) return this.inputType[modelName][type];\n const { tableInfo } = this.getTables()[modelName]!;\n const input = this.builder.inputRef(`${tableInfo.name}${type}`);\n input.implement(options);\n this.inputType[modelName][type] = input;\n return input;\n }\n getInputRelation(modelName: string) {\n const { relations } = this.getTables()[modelName]!;\n\n const relayFields = Object.entries(relations)\n .filter(([, relation]) => relation.through)\n .map(([relationName, relation]) => {\n const rowInputType = this.getInputType(modelName, `_${relationName}Set`, {\n fields: (t) =>\n Object.fromEntries(\n relation.targetColumns.map((col) => [\n col.name,\n t.field({\n type: this.getDataType(col),\n required: col.notNull,\n }),\n ])\n ),\n });\n const relationInputType = this.getInputType(modelName, `_${relationName}`, {\n fields: (t) => ({\n set: t.field({ type: [rowInputType] }),\n }),\n });\n\n return [relationName, relationInputType] as const;\n });\n return relayFields;\n }\n getInputCreate(modelName: string) {\n const { inputColumns } = this.getTables()[modelName]!;\n\n return this.getInputType(modelName, \"Create\", {\n fields: (t) => {\n const dbFields = inputColumns.map((col: PgColumn) => [\n col.name,\n t.field({\n type: this.getDataType(col),\n required: col.notNull && !col.default,\n }),\n ]);\n const relayFields = this.getInputRelation(modelName);\n\n return Object.fromEntries([\n ...dbFields,\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\n ]);\n },\n });\n }\n\n getInputUpdate(modelName: string) {\n const { inputColumns } = this.getTables()[modelName]!;\n return this.getInputType(modelName, \"Update\", {\n fields: (t) => {\n const dbFields = inputColumns.map((c: PgColumn) => [\n c.name,\n t.field({\n type: this.getDataType(c),\n }),\n ]);\n const relayFields = this.getInputRelation(modelName);\n return Object.fromEntries([\n ...dbFields,\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\n ]);\n },\n });\n }\n getInputWhere(modelName: string) {\n const { tableInfo, relations } = this.getTables()[modelName]!;\n const inputWhere = this.getInputType(modelName, \"Where\", {\n fields: (t) => {\n return Object.fromEntries([\n [\"AND\", t.field({ type: [inputWhere] })],\n [\"OR\", t.field({ type: [inputWhere] })],\n [\"NOT\", t.field({ type: inputWhere })],\n ...tableInfo.columns.map((c: PgColumn) => {\n return [\n c.name,\n t.field({\n type: this.getInputOperator(this.getDataType(c)),\n }),\n ];\n }),\n ...Object.entries(relations).map(([key, relay]) => {\n const table = this.getTable(relay.targetTable);\n if (!table) return [];\n const { tableInfo } = table;\n return [\n key,\n t.field({\n type: `${tableInfo.name}Where`,\n }),\n ];\n }),\n ]);\n },\n });\n return inputWhere;\n }\n getInputOrderBy(modelName: string) {\n const { tableInfo } = this.getTables()[modelName]!;\n const inputWhere = this.getInputType(modelName, \"OrderBy\", {\n fields: (t) => {\n return Object.fromEntries(\n tableInfo.columns.map((c: PgColumn) => {\n return [\n c.name,\n t.field({\n type: this.enums[\"OrderBy\"]!,\n }),\n ];\n })\n );\n },\n });\n return inputWhere;\n }\n\n getInputOperator(type: string | [string]) {\n const typeName = Array.isArray(type) ? `Array${type[0]}` : type;\n const input = this.inputOperators[typeName] ?? createInputOperator(this.builder, type);\n this.inputOperators[typeName] = input;\n return input;\n }\n createInputType() {\n const builder: PothosSchemaTypes.SchemaBuilder<Types> = this.builder;\n\n const scalars = [\n [\"BigInt\", BigIntResolver],\n [\"Date\", DateResolver],\n [\"Bytes\", ByteResolver],\n [\"DateTime\", DateTimeResolver],\n [\"Json\", JSONResolver],\n [\"Decimal\", HexadecimalResolver],\n ] as const;\n for (const [scalarName, scalarResolver] of scalars) {\n if (!builder.configStore.hasConfig(scalarName)) {\n builder.addScalarType(scalarName as never, scalarResolver, {});\n }\n }\n\n this.enums[\"OrderBy\"] = builder.enumType(\"OrderBy\", {\n values: {\n Asc: { value: \"asc\" },\n Desc: { value: \"desc\" },\n },\n });\n }\n getDataType(column: PgColumn): string | [string] {\n const isArray = column.dataType.split(\" \")[0] === \"array\";\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const c = isArray ? (column as PgArray<any, any>).baseColumn : column;\n const types = c.dataType.split(\" \");\n\n switch (types[1] ?? types[0]) {\n case \"enum\": {\n const sqlType = c.getSQLType();\n const e = this.enums[sqlType];\n if (!e) {\n this.enums[sqlType] = this.builder.enumType(sqlType, {\n values: c.enumValues ?? [],\n });\n }\n return isArray ? [sqlType] : sqlType;\n }\n case \"json\":\n return isArray ? [\"Json\"] : \"Json\";\n case \"date\":\n return isArray ? [\"DateTime\"] : \"DateTime\";\n case \"datetime\":\n return isArray ? [\"DateTime\"] : \"DateTime\";\n case \"boolean\":\n return isArray ? [\"Boolean\"] : \"Boolean\";\n case \"double\":\n case \"float\":\n case \"udouble\":\n case \"ufloat\":\n return isArray ? [\"Float\"] : \"Float\";\n }\n const type = isArray ? types[1]! : types[0]!;\n const scalerMap: Record<string, string> = {\n bigint: \"BigInt\",\n number: \"Float\",\n string: \"String\",\n };\n const result = scalerMap[type] ?? \"String\";\n return isArray ? [result] : result;\n }\n}\n\nexport const replaceColumnValues = (\n tables: Record<string, ModelData>,\n tableName: string,\n tree: FieldTree,\n queryData: {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n }\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: PgColumn[], primary?: boolean) => {\n const queryFields = getQueryFields(info);\n const isRelay = Object.keys(queryFields).some((v) => !columns.find((c) => c.name === v));\n const returnFields = columns\n .filter((v) => queryFields[v.name] || (primary && v.primary))\n .map((v) => [v.name, v]);\n if (!returnFields.length) return { isRelay, queryFields, returning: undefined };\n return {\n isRelay,\n queryFields,\n returning: Object.fromEntries(\n columns.filter((v) => queryFields[v.name]).map((v) => [v.name, v])\n ),\n };\n};\n"]}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isTable,\n sql,\n type AnyRelations,\n type RelationsRecord,\n type SchemaEntry,\n} from \"drizzle-orm\";\nimport {\n BigIntResolver,\n ByteResolver,\n DateResolver,\n DateTimeResolver,\n JSONResolver,\n} from \"graphql-scalars\";\nimport { expandOperations, OperationBasic } from \"./libs/operations.js\";\nimport { createInputOperator, getQueryFields, type FieldTree } from \"./libs/utils.js\";\nimport type { SchemaTypes } from \"@pothos/core\";\nimport type { DrizzleClient } from \"@pothos/plugin-drizzle\";\nimport type { NodePgDatabase } from \"drizzle-orm/node-postgres\";\nimport type { PgArray, PgColumn, PgTable, getTableConfig } from \"drizzle-orm/pg-core\";\nimport type { RelationalQueryBuilder } from \"drizzle-orm/pg-core/query-builders/query\";\nimport type { GraphQLResolveInfo } from \"graphql\";\n\nexport type ModelData = {\n table: SchemaEntry;\n operations: (typeof OperationBasic)[number][];\n filterColumns: string[];\n columns: PgColumn[];\n primaryColumns: PgColumn[];\n inputColumns: PgColumn[];\n tableInfo: ReturnType<typeof getTableConfig>;\n relations: RelationsRecord;\n executable?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => boolean | undefined)\n | undefined;\n limit?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => number | undefined)\n | undefined;\n orderBy?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n where?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n inputData?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => object | undefined)\n | undefined;\n depthLimit?:\n | ((params: {\n ctx: object;\n modelName: string;\n operation: (typeof OperationBasic)[number];\n }) => number | undefined)\n | undefined;\n};\n\ninterface QueryDataType {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n}\n\nexport class DrizzleGenerator<Types extends SchemaTypes> {\n enums: Record<string, PothosSchemaTypes.EnumRef<Types, unknown>> = {};\n inputOperators: Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>> = {};\n inputType: Record<string, Record<string, PothosSchemaTypes.InputObjectRef<Types, unknown>>> = {};\n tables?: Record<string, ModelData>;\n\n builder: PothosSchemaTypes.SchemaBuilder<Types>;\n constructor(builder: PothosSchemaTypes.SchemaBuilder<Types>) {\n this.builder = builder;\n this.createInputType();\n }\n getTableConfig() {\n const drizzleOption = this.builder.options.drizzle;\n return drizzleOption.getTableConfig as (\n param: Parameters<typeof getTableConfig>[0] | SchemaEntry\n ) => ReturnType<typeof getTableConfig>;\n }\n createTableInfo(): Record<string, ModelData> {\n const options = this.builder.options.pothosDrizzleGenerator;\n const getConfig = this.getTableConfig();\n const relations = this.getRelations();\n const tables = Object.values(relations)\n .filter((t) => isTable(t.table))\n .map(({ name: modelName, table, relations }) => {\n const tableInfo = getConfig(table as PgTable);\n const allOptions = options?.all;\n const modelOptions = options?.models?.[modelName];\n const columns = tableInfo.columns;\n const primaryColumns = Array.from(\n new Set([\n ...tableInfo.primaryKeys.flatMap((v) => v.columns),\n ...columns.filter((v) => v.primary),\n ])\n );\n\n //Operations\n const operationValue = (modelOptions?.operations ?? allOptions?.operations)?.({\n modelName,\n });\n const operationIncludes = expandOperations(operationValue?.include ?? OperationBasic);\n const operationExcludes = expandOperations(operationValue?.exclude ?? []);\n const operations = operationIncludes.filter((v) => !operationExcludes.includes(v));\n // Columns filter\n const columnValue = (modelOptions?.fields ?? allOptions?.fields)?.({\n modelName,\n });\n const include = (columnValue?.include as undefined | string[]) ?? [\n ...columns.map((c) => c.name),\n ...Object.keys(relations),\n ...Object.keys(relations).map((v) => `${v}Count`),\n ];\n const exclude = (columnValue?.exclude as undefined | string[]) ?? [];\n const filterColumns = include.filter((name) => !exclude.includes(name));\n\n // Input columns filter\n const inputFieldValue = (modelOptions?.inputFields ?? allOptions?.inputFields)?.({\n modelName,\n });\n const includeInput = inputFieldValue?.include ?? columns.map((c) => c.name);\n const excludeInput = inputFieldValue?.exclude ?? [];\n const filterInputColumns = includeInput.filter((name) => !excludeInput.includes(name));\n return [\n modelName,\n {\n table,\n relations,\n columns,\n filterColumns,\n primaryColumns,\n operations,\n inputColumns: columns.filter((c) => filterInputColumns.includes(c.name)),\n tableInfo,\n executable: modelOptions?.executable ?? allOptions?.executable,\n limit: modelOptions?.limit ?? allOptions?.limit,\n orderBy: modelOptions?.orderBy ?? allOptions?.orderBy,\n where: modelOptions?.where ?? allOptions?.where,\n inputData: modelOptions?.inputData ?? allOptions?.inputData,\n depthLimit: modelOptions?.depthLimit ?? allOptions?.depthLimit,\n },\n ] as const;\n });\n const modelNames = tables.map(([name]) => name);\n // Model filter\n const include = options?.use?.include ?? modelNames;\n const exclude = options?.use?.exclude ?? [];\n const filterTables = include.filter((name) => !exclude.includes(name));\n return Object.fromEntries(tables.filter(([name]) => filterTables.includes(name)));\n }\n getClient(ctx: object) {\n const options = this.builder.options;\n const drizzleOption = options.drizzle;\n const client =\n drizzleOption.client instanceof Function ? drizzleOption.client(ctx) : drizzleOption.client;\n return client as NodePgDatabase;\n }\n getQueryTable(ctx: object, modelName: string) {\n return this.getClient(ctx).query[modelName as never] as RelationalQueryBuilder<never, never>;\n }\n getRelations(): AnyRelations {\n const drizzleOption = this.builder.options.drizzle;\n const client = drizzleOption.client as DrizzleClient;\n return drizzleOption.relations ?? client._.relations;\n }\n getTables() {\n if (this.tables) return this.tables;\n const tables = this.createTableInfo();\n this.tables = tables;\n return tables;\n }\n getTable(table: SchemaEntry) {\n const result = Object.values(this.getTables()).find((v) => v.table === table);\n return result;\n }\n getInputType(\n modelName: string,\n type: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: PothosSchemaTypes.InputObjectTypeOptions<any, any>\n ) {\n if (!this.inputType[modelName]) this.inputType[modelName] = {};\n if (this.inputType[modelName][type]) return this.inputType[modelName][type];\n const { tableInfo } = this.getTables()[modelName]!;\n const input = this.builder.inputRef(`${tableInfo.name}${type}`);\n input.implement(options);\n this.inputType[modelName][type] = input;\n return input;\n }\n getInputRelation(modelName: string) {\n const { relations } = this.getTables()[modelName]!;\n\n const relayFields = Object.entries(relations)\n .filter(([, relation]) => relation.through)\n .map(([relationName, relation]) => {\n const rowInputType = this.getInputType(modelName, `_${relationName}Set`, {\n fields: (t) =>\n Object.fromEntries(\n relation.targetColumns.map((col) => [\n col.name,\n t.field({\n type: this.getDataType(col),\n required: col.notNull,\n }),\n ])\n ),\n });\n const relationInputType = this.getInputType(modelName, `_${relationName}`, {\n fields: (t) => ({\n set: t.field({ type: [rowInputType] }),\n }),\n });\n\n return [relationName, relationInputType] as const;\n });\n return relayFields;\n }\n getInputCreate(modelName: string) {\n const { inputColumns } = this.getTables()[modelName]!;\n\n return this.getInputType(modelName, \"Create\", {\n fields: (t) => {\n const dbFields = inputColumns.map((col: PgColumn) => [\n col.name,\n t.field({\n type: this.getDataType(col),\n required: col.notNull && !col.default,\n }),\n ]);\n const relayFields = this.getInputRelation(modelName);\n\n return Object.fromEntries([\n ...dbFields,\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\n ]);\n },\n });\n }\n\n getInputUpdate(modelName: string) {\n const { inputColumns } = this.getTables()[modelName]!;\n return this.getInputType(modelName, \"Update\", {\n fields: (t) => {\n const dbFields = inputColumns.map((c: PgColumn) => [\n c.name,\n t.field({\n type: this.getDataType(c),\n }),\n ]);\n const relayFields = this.getInputRelation(modelName);\n return Object.fromEntries([\n ...dbFields,\n ...relayFields.map(([name, field]) => [name, t.field({ type: field })]),\n ]);\n },\n });\n }\n getInputWhere(modelName: string) {\n const { tableInfo, relations } = this.getTables()[modelName]!;\n const inputWhere = this.getInputType(modelName, \"Where\", {\n fields: (t) => {\n return Object.fromEntries([\n [\"AND\", t.field({ type: [inputWhere] })],\n [\"OR\", t.field({ type: [inputWhere] })],\n [\"NOT\", t.field({ type: inputWhere })],\n ...tableInfo.columns.map((c: PgColumn) => {\n return [\n c.name,\n t.field({\n type: this.getInputOperator(this.getDataType(c)),\n }),\n ];\n }),\n ...Object.entries(relations).map(([key, relay]) => {\n const table = this.getTable(relay.targetTable);\n if (!table) return [];\n const { tableInfo } = table;\n return [\n key,\n t.field({\n type: `${tableInfo.name}Where`,\n }),\n ];\n }),\n ]);\n },\n });\n return inputWhere;\n }\n getInputOrderBy(modelName: string) {\n const { tableInfo } = this.getTables()[modelName]!;\n const inputWhere = this.getInputType(modelName, \"OrderBy\", {\n fields: (t) => {\n return Object.fromEntries(\n tableInfo.columns.map((c: PgColumn) => {\n return [\n c.name,\n t.field({\n type: this.enums[\"OrderBy\"]!,\n }),\n ];\n })\n );\n },\n });\n return inputWhere;\n }\n\n getInputOperator(type: string | [string]) {\n const typeName = Array.isArray(type) ? `Array${type[0]}` : type;\n const input = this.inputOperators[typeName] ?? createInputOperator(this.builder, type);\n this.inputOperators[typeName] = input;\n return input;\n }\n createInputType() {\n const builder: PothosSchemaTypes.SchemaBuilder<Types> = this.builder;\n\n const scalars = [\n [\"BigInt\", BigIntResolver],\n [\"Date\", DateResolver],\n [\"Bytes\", ByteResolver],\n [\"DateTime\", DateTimeResolver],\n [\"Json\", JSONResolver],\n ] as const;\n for (const [scalarName, scalarResolver] of scalars) {\n if (!builder.configStore.hasConfig(scalarName)) {\n builder.addScalarType(scalarName as never, scalarResolver, {});\n }\n }\n\n this.enums[\"OrderBy\"] = builder.enumType(\"OrderBy\", {\n values: {\n Asc: { value: \"asc\" },\n Desc: { value: \"desc\" },\n },\n });\n }\n getDataType(column: PgColumn): string | [string] {\n const isArray = column.dataType.split(\" \")[0] === \"array\";\n const c = isArray ? ((column as PgArray<never, never>).baseColumn ?? column) : column;\n const types = c.dataType.split(\" \");\n if (types[0] === \"string\" && types[1] !== \"enum\") {\n return isArray ? [\"String\"] : \"String\";\n }\n if (types[0] === \"bigint\") {\n return isArray ? [\"BigInt\"] : \"BigInt\";\n }\n switch (types[1] ?? types[0]) {\n case \"enum\": {\n const sqlType = c.getSQLType();\n const e = this.enums[sqlType];\n if (!e) {\n this.enums[sqlType] = this.builder.enumType(sqlType, {\n values: c.enumValues!,\n });\n }\n return isArray ? [sqlType] : sqlType;\n }\n case \"buffer\":\n return isArray ? [\"Bytes\"] : \"Bytes\";\n case \"json\":\n return isArray ? [\"Json\"] : \"Json\";\n case \"date\":\n return isArray ? [\"DateTime\"] : \"DateTime\";\n case \"boolean\":\n return isArray ? [\"Boolean\"] : \"Boolean\";\n case \"point\":\n case \"double\":\n return isArray ? [\"Float\"] : \"Float\";\n }\n if (types[1]?.startsWith(\"int\")) {\n return isArray ? [\"Int\"] : \"Int\";\n }\n const type = isArray ? types[1]! : types[0]!;\n const scalerMap: Record<string, string> = {\n number: \"Float\",\n string: \"String\",\n };\n const result = scalerMap[type] ?? \"String\";\n return isArray ? [result] : result;\n }\n}\n\nexport const replaceColumnValues = (\n tables: Record<string, ModelData>,\n tableName: string,\n tree: FieldTree,\n queryData: {\n columns?: Record<string, boolean>;\n with?: Record<string, QueryDataType>;\n _name?: string;\n }\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: PgColumn[], primary?: boolean) => {\n const queryFields = getQueryFields(info);\n const isRelay = Object.keys(queryFields).some((v) => !columns.find((c) => c.name === v));\n const returnFields = columns\n .filter((v) => queryFields[v.name] || ((primary || isRelay) && v.primary))\n .map((v) => [v.name, v]);\n if (!returnFields.length) return { isRelay, queryFields, returning: undefined };\n const returning = Object.fromEntries(returnFields);\n return {\n isRelay,\n queryFields,\n returning: Object.fromEntries(columns.filter((v) => returning[v.name]).map((v) => [v.name, v])),\n };\n};\n"]}
@@ -9,3 +9,4 @@ export declare const OperationAll: readonly ["find", "update", "delete", "query"
9
9
  export type Operation = (typeof OperationAll)[number] | "all";
10
10
  export declare const expandOperations: (operations: readonly Operation[]) => ("findFirst" | "findMany" | "count" | "createOne" | "createMany" | "update" | "delete")[];
11
11
  export declare const isOperation: (operations: readonly string[], operation: (typeof OperationBasic)[number]) => boolean;
12
+ export declare const isOperationIncluded: (operations: Operation[], op: Operation) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOperation = exports.expandOperations = exports.OperationAll = exports.OperationBasic = exports.OperationMutation = exports.OperationDelete = exports.OperationUpdate = exports.OperationCreate = exports.OperationQuery = exports.OperationFind = void 0;
3
+ exports.isOperationIncluded = exports.isOperation = exports.expandOperations = exports.OperationAll = exports.OperationBasic = exports.OperationMutation = exports.OperationDelete = exports.OperationUpdate = exports.OperationCreate = exports.OperationQuery = exports.OperationFind = void 0;
4
4
  exports.OperationFind = ["findFirst", "findMany"];
5
5
  exports.OperationQuery = [...exports.OperationFind, "count"];
6
6
  exports.OperationCreate = ["createOne", "createMany"];
@@ -40,4 +40,10 @@ const isOperation = (operations, operation) => {
40
40
  return operations.includes(operation);
41
41
  };
42
42
  exports.isOperation = isOperation;
43
+ const isOperationIncluded = (operations, op) => {
44
+ const aOperations = new Set((0, exports.expandOperations)(operations));
45
+ const bOperations = (0, exports.expandOperations)([op]);
46
+ return bOperations.every((v) => aOperations.has(v));
47
+ };
48
+ exports.isOperationIncluded = isOperationIncluded;
43
49
  //# sourceMappingURL=operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/libs/operations.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,CAAC,WAAW,EAAE,UAAU,CAAU,CAAC;AACnD,QAAA,cAAc,GAAG,CAAC,GAAG,qBAAa,EAAE,OAAO,CAAU,CAAC;AACtD,QAAA,eAAe,GAAG,CAAC,WAAW,EAAE,YAAY,CAAU,CAAC;AACvD,QAAA,eAAe,GAAG,CAAC,QAAQ,CAAU,CAAC;AACtC,QAAA,eAAe,GAAG,CAAC,QAAQ,CAAU,CAAC;AACtC,QAAA,iBAAiB,GAAG;IAC/B,GAAG,uBAAe;IAClB,GAAG,uBAAe;IAClB,GAAG,uBAAe;CACV,CAAC;AACE,QAAA,cAAc,GAAG,CAAC,GAAG,sBAAc,EAAE,GAAG,yBAAiB,CAAU,CAAC;AACpE,QAAA,YAAY,GAAG;IAC1B,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,UAAU;IACV,GAAG,sBAAc;CACT,CAAC;AAIJ,MAAM,gBAAgB,GAAG,CAAC,UAAgC,EAAE,EAAE;IACnE,OAAO,UAAU,CAAC,OAAO,CAAkC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC,KAAK,KAAK;QACT,CAAC,CAAC,sBAAc;QAChB,CAAC,CAAC,CAAC,KAAK,MAAM;YACZ,CAAC,CAAC,qBAAa;YACf,CAAC,CAAC,CAAC,KAAK,QAAQ;gBACd,CAAC,CAAC,uBAAe;gBACjB,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACd,CAAC,CAAC,uBAAe;oBACjB,CAAC,CAAC,CAAC,KAAK,OAAO;wBACb,CAAC,CAAC,sBAAc;wBAChB,CAAC,CAAC,CAAC,KAAK,UAAU;4BAChB,CAAC,CAAC,yBAAiB;4BACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,gBAAgB,oBAgB3B;AAEK,MAAM,WAAW,GAAG,CACzB,UAA6B,EAC7B,SAA0C,EAC1C,EAAE;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB","sourcesContent":["export const OperationFind = [\"findFirst\", \"findMany\"] as const;\nexport const OperationQuery = [...OperationFind, \"count\"] as const;\nexport const OperationCreate = [\"createOne\", \"createMany\"] as const;\nexport const OperationUpdate = [\"update\"] as const;\nexport const OperationDelete = [\"delete\"] as const;\nexport const OperationMutation = [\n ...OperationCreate,\n ...OperationUpdate,\n ...OperationDelete,\n] as const;\nexport const OperationBasic = [...OperationQuery, ...OperationMutation] as const;\nexport const OperationAll = [\n \"find\",\n \"update\",\n \"delete\",\n \"query\",\n \"mutation\",\n ...OperationBasic,\n] as const;\n\nexport type Operation = (typeof OperationAll)[number] | \"all\";\n\nexport const expandOperations = (operations: readonly Operation[]) => {\n return operations.flatMap<(typeof OperationBasic)[number]>((v) =>\n v === \"all\"\n ? OperationBasic\n : v === \"find\"\n ? OperationFind\n : v === \"update\"\n ? OperationUpdate\n : v === \"delete\"\n ? OperationDelete\n : v === \"query\"\n ? OperationQuery\n : v === \"mutation\"\n ? OperationMutation\n : [v]\n );\n};\n\nexport const isOperation = (\n operations: readonly string[],\n operation: (typeof OperationBasic)[number]\n) => {\n return operations.includes(operation);\n};\n"]}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../src/libs/operations.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,CAAC,WAAW,EAAE,UAAU,CAAU,CAAC;AACnD,QAAA,cAAc,GAAG,CAAC,GAAG,qBAAa,EAAE,OAAO,CAAU,CAAC;AACtD,QAAA,eAAe,GAAG,CAAC,WAAW,EAAE,YAAY,CAAU,CAAC;AACvD,QAAA,eAAe,GAAG,CAAC,QAAQ,CAAU,CAAC;AACtC,QAAA,eAAe,GAAG,CAAC,QAAQ,CAAU,CAAC;AACtC,QAAA,iBAAiB,GAAG;IAC/B,GAAG,uBAAe;IAClB,GAAG,uBAAe;IAClB,GAAG,uBAAe;CACV,CAAC;AACE,QAAA,cAAc,GAAG,CAAC,GAAG,sBAAc,EAAE,GAAG,yBAAiB,CAAU,CAAC;AACpE,QAAA,YAAY,GAAG;IAC1B,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,UAAU;IACV,GAAG,sBAAc;CACT,CAAC;AAIJ,MAAM,gBAAgB,GAAG,CAAC,UAAgC,EAAE,EAAE;IACnE,OAAO,UAAU,CAAC,OAAO,CAAkC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC,KAAK,KAAK;QACT,CAAC,CAAC,sBAAc;QAChB,CAAC,CAAC,CAAC,KAAK,MAAM;YACZ,CAAC,CAAC,qBAAa;YACf,CAAC,CAAC,CAAC,KAAK,QAAQ;gBACd,CAAC,CAAC,uBAAe;gBACjB,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACd,CAAC,CAAC,uBAAe;oBACjB,CAAC,CAAC,CAAC,KAAK,OAAO;wBACb,CAAC,CAAC,sBAAc;wBAChB,CAAC,CAAC,CAAC,KAAK,UAAU;4BAChB,CAAC,CAAC,yBAAiB;4BACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,gBAAgB,oBAgB3B;AAEK,MAAM,WAAW,GAAG,CACzB,UAA6B,EAC7B,SAA0C,EAC1C,EAAE;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAAuB,EAAE,EAAa,EAAE,EAAE;IAC5E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAA,wBAAgB,EAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,IAAA,wBAAgB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B","sourcesContent":["export const OperationFind = [\"findFirst\", \"findMany\"] as const;\nexport const OperationQuery = [...OperationFind, \"count\"] as const;\nexport const OperationCreate = [\"createOne\", \"createMany\"] as const;\nexport const OperationUpdate = [\"update\"] as const;\nexport const OperationDelete = [\"delete\"] as const;\nexport const OperationMutation = [\n ...OperationCreate,\n ...OperationUpdate,\n ...OperationDelete,\n] as const;\nexport const OperationBasic = [...OperationQuery, ...OperationMutation] as const;\nexport const OperationAll = [\n \"find\",\n \"update\",\n \"delete\",\n \"query\",\n \"mutation\",\n ...OperationBasic,\n] as const;\n\nexport type Operation = (typeof OperationAll)[number] | \"all\";\n\nexport const expandOperations = (operations: readonly Operation[]) => {\n return operations.flatMap<(typeof OperationBasic)[number]>((v) =>\n v === \"all\"\n ? OperationBasic\n : v === \"find\"\n ? OperationFind\n : v === \"update\"\n ? OperationUpdate\n : v === \"delete\"\n ? OperationDelete\n : v === \"query\"\n ? OperationQuery\n : v === \"mutation\"\n ? OperationMutation\n : [v]\n );\n};\n\nexport const isOperation = (\n operations: readonly string[],\n operation: (typeof OperationBasic)[number]\n) => {\n return operations.includes(operation);\n};\n\nexport const isOperationIncluded = (operations: Operation[], op: Operation) => {\n const aOperations = new Set(expandOperations(operations));\n const bOperations = expandOperations([op]);\n return bOperations.every((v) => aOperations.has(v));\n};\n"]}
@@ -47,14 +47,4 @@ export declare const createInputOperator: (builder: PothosSchemaTypes.SchemaBuil
47
47
  arrayOverlaps: never;
48
48
  arrayContains: never;
49
49
  }>;
50
- type AggregationQueryType = {
51
- aggregation?: boolean;
52
- columns?: object;
53
- with: Record<string, AggregationQueryType>;
54
- };
55
- export declare const convertAggregationQuery: (query: AggregationQueryType) => {
56
- with: Record<string, AggregationQueryType>;
57
- aggregation?: boolean;
58
- columns?: object;
59
- };
60
50
  export {};
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.convertAggregationQuery = exports.createInputOperator = exports.createWhereQuery = exports.getQueryFields = exports.getQueryFragment = void 0;
36
+ exports.createInputOperator = exports.createWhereQuery = exports.getQueryFields = exports.getQueryFragment = void 0;
37
37
  exports.getQueryDepth = getQueryDepth;
38
38
  const p = __importStar(require("drizzle-orm"));
39
39
  function getDepthFromSelection(selection, currentDepth) {
@@ -44,7 +44,7 @@ function getDepthFromSelection(selection, currentDepth) {
44
44
  return currentDepth;
45
45
  }
46
46
  function getQueryDepth(info) {
47
- return info.fieldNodes[0] ? getDepthFromSelection(info.fieldNodes[0], 1) : 1;
47
+ return getDepthFromSelection(info.fieldNodes[0], 1);
48
48
  }
49
49
  const getQueryFragment = (info, selectFields, field) => {
50
50
  if (field.kind === "FragmentSpread") {
@@ -66,10 +66,8 @@ exports.getQueryFragment = getQueryFragment;
66
66
  const getQueryFields = (info, fieldNodes) => {
67
67
  const selectFields = {};
68
68
  for (const fieldNode of fieldNodes ?? info.fieldNodes) {
69
- if (fieldNode.selectionSet) {
70
- for (const field of fieldNode.selectionSet.selections) {
71
- (0, exports.getQueryFragment)(info, selectFields, field);
72
- }
69
+ for (const field of fieldNode.selectionSet.selections) {
70
+ (0, exports.getQueryFragment)(info, selectFields, field);
73
71
  }
74
72
  }
75
73
  return selectFields;
@@ -159,14 +157,4 @@ builder, type) => {
159
157
  return inputType;
160
158
  };
161
159
  exports.createInputOperator = createInputOperator;
162
- const convertAggregationQuery = (query) => {
163
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
164
- const { aggregation, columns, ...q } = query;
165
- const newQuery = aggregation ? { ...q, columns: {} } : query;
166
- const newWith = query.with
167
- ? Object.fromEntries(Object.entries(query.with).map(([key, value]) => [key, (0, exports.convertAggregationQuery)(value)]))
168
- : query.with;
169
- return { ...newQuery, with: newWith };
170
- };
171
- exports.convertAggregationQuery = convertAggregationQuery;
172
160
  //# sourceMappingURL=utils.js.map