diff --git a/src/lib/graphql/resolvers.ts b/src/lib/graphql/resolvers.ts index 51fa1df..279b921 100644 --- a/src/lib/graphql/resolvers.ts +++ b/src/lib/graphql/resolvers.ts @@ -575,18 +575,30 @@ export const resolvers = { }) }, relatedProducts: async (parent: { id: string }) => { - const product = await prisma.product.findUnique({ - where: { id: parent.id }, - include: { relatedProducts: { include: { images: { orderBy: { order: 'asc' } } } } } - }) - return product?.relatedProducts || [] + const product = await prisma.product.findUnique({ + where: { id: parent.id }, + include: { + products_RelatedProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_RelatedProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } + } + }) + // Объединяем связанные товары из обеих сторон связи + const relatedA = product?.products_RelatedProducts_A || [] + const relatedB = product?.products_RelatedProducts_B || [] + return [...relatedA, ...relatedB] }, accessoryProducts: async (parent: { id: string }) => { - const product = await prisma.product.findUnique({ - where: { id: parent.id }, - include: { accessoryProducts: { include: { images: { orderBy: { order: 'asc' } } } } } - }) - return product?.accessoryProducts || [] + const product = await prisma.product.findUnique({ + where: { id: parent.id }, + include: { + products_AccessoryProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } + } + }) + // Объединяем аксессуары из обеих сторон связи + const accessoryA = product?.products_AccessoryProducts_A || [] + const accessoryB = product?.products_AccessoryProducts_B || [] + return [...accessoryA, ...accessoryB] } }, @@ -855,8 +867,10 @@ export const resolvers = { } }, characteristics: { include: { characteristic: true } }, - relatedProducts: { include: { images: { orderBy: { order: 'asc' } } } }, - accessoryProducts: { include: { images: { orderBy: { order: 'asc' } } } } + products_RelatedProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_RelatedProducts_B: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } } }) } catch (error) { @@ -879,8 +893,10 @@ export const resolvers = { } }, characteristics: { include: { characteristic: true } }, - relatedProducts: { include: { images: { orderBy: { order: 'asc' } } } }, - accessoryProducts: { include: { images: { orderBy: { order: 'asc' } } } } + products_RelatedProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_RelatedProducts_B: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } } }) } catch (error) { @@ -4492,8 +4508,10 @@ export const resolvers = { } }, characteristics: { include: { characteristic: true } }, - relatedProducts: { include: { images: { orderBy: { order: 'asc' } } } }, - accessoryProducts: { include: { images: { orderBy: { order: 'asc' } } } } + products_RelatedProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_RelatedProducts_B: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } } }) @@ -4562,8 +4580,10 @@ export const resolvers = { } }, characteristics: { include: { characteristic: true } }, - relatedProducts: { include: { images: { orderBy: { order: 'asc' } } } }, - accessoryProducts: { include: { images: { orderBy: { order: 'asc' } } } } + products_RelatedProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_RelatedProducts_B: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_A: { include: { images: { orderBy: { order: 'asc' } } } }, + products_AccessoryProducts_B: { include: { images: { orderBy: { order: 'asc' } } } } } })