From 54019c9b67ad45bb0bee3608fa56fa055ec9068d Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Mon, 21 Oct 2024 14:24:26 -0700 Subject: [PATCH] use builder.nodeRef in prisma plugin --- packages/plugin-prisma/src/schema-builder.ts | 46 ++++---------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/packages/plugin-prisma/src/schema-builder.ts b/packages/plugin-prisma/src/schema-builder.ts index 9a7967c47..d37af37a5 100644 --- a/packages/plugin-prisma/src/schema-builder.ts +++ b/packages/plugin-prisma/src/schema-builder.ts @@ -125,7 +125,6 @@ schemaBuilderProto.prismaNode = function prismaNode( }: PrismaNodeOptions, ) { const fieldName = field as unknown as string; - const interfaceRef = this.nodeInterfaceRef?.(); const resolve = rawResolve ?? getDefaultIDSerializer(type, fieldName, this); const idParser = fieldName ? getDefaultIDParser(type, fieldName, this) : undefined; const typeName = variant ?? name ?? type; @@ -135,16 +134,20 @@ schemaBuilderProto.prismaNode = function prismaNode( rawFindUnique(resolve(parent as never, context) as string, context) : ModelLoader.getFindUniqueForField(nodeRef, type, fieldName, this); - if (!interfaceRef) { - throw new PothosError('builder.prismaNode requires @pothos/plugin-relay to be installed'); - } - const extendedOptions = { ...options, name, variant, - interfaces: [interfaceRef], findUnique, + }; + + const ref = this.prismaObject(type, extendedOptions as never); + + (this as typeof this & { nodeRef: (ref: unknown, options: unknown) => unknown }).nodeRef(ref, { + id: { + ...idOptions, + resolve: (parent: never, _args: object, context: object) => resolve(parent, context), + }, loadWithoutCache: async ( id: string, context: SchemaTypes['Context'], @@ -168,37 +171,6 @@ schemaBuilderProto.prismaNode = function prismaNode( return record; }, - }; - - const ref = this.prismaObject(type, extendedOptions as never); - - if (options.interfaces) { - ref.addInterfaces(options.interfaces); - } - - this.configStore.onTypeConfig(ref, (nodeConfig) => { - this.objectField( - ref, - (this.options as { relay?: { idFieldName?: string } }).relay?.idFieldName ?? - 'id', - (t) => - ( - t as unknown as { - globalID: (options: Record) => FieldRef; - } - ).globalID({ - ...(this.options as { relay?: { idFieldOptions?: object } }).relay - ?.idFieldOptions, - ...idOptions, - nullable: false, - args: {}, - resolve: (parent: never, _args: object, context: object) => - completeValue(resolve(parent, context), (id) => ({ - type: nodeConfig.name, - id, - })), - }), - ); }); this.configStore.associateParamWithRef(nodeRef, ref);