import { resolvers as oldResolvers } from '../resolvers' import { JSONScalar, DateTimeScalar } from '../scalars' import { authResolvers } from './auth' import { employeeResolvers } from './employees' import { logisticsResolvers } from './logistics' import { referralResolvers } from './referrals' import { suppliesResolvers } from './supplies' // Типы для резолверов interface ResolverObject { Query?: Record Mutation?: Record [key: string]: unknown } // Функция для объединения резолверов const mergeResolvers = (...resolvers: ResolverObject[]): ResolverObject => { const result: ResolverObject = { Query: {}, Mutation: {}, } for (const resolver of resolvers) { if (resolver?.Query) { Object.assign(result.Query, resolver.Query) } if (resolver?.Mutation) { Object.assign(result.Mutation, resolver.Mutation) } // Объединяем другие типы резолверов (например, Employee, Organization и т.д.) for (const [key, value] of Object.entries(resolver)) { if (key !== 'Query' && key !== 'Mutation') { if (!result[key]) { result[key] = {} } if (typeof value === 'object' && value !== null) { Object.assign(result[key], value) } } } } return result } // Временно импортируем старые резолверы для частей, которые еще не вынесены // TODO: Постепенно убрать это после полного рефакторинга // Объединяем новые модульные резолверы с остальными старыми const mergedResolvers = mergeResolvers( // Скалярные типы { JSON: JSONScalar, DateTime: DateTimeScalar, }, // Временно добавляем старые резолверы ПЕРВЫМИ, чтобы новые их перезаписали { Query: (() => { const { myEmployees: _myEmployees, logisticsPartners: _logisticsPartners, pendingSuppliesCount: _pendingSuppliesCount, myReferralLink: _myReferralLink, myPartnerLink: _myPartnerLink, myReferralStats: _myReferralStats, myReferrals: _myReferrals, ...filteredQuery } = oldResolvers.Query || {} return filteredQuery })(), Mutation: { ...oldResolvers.Mutation, // Исключаем уже вынесенные Mutation sendSmsCode: undefined, // verifySmsCode: undefined, // НЕ исключаем - пока в старых резолверах verifyInn: undefined, // registerFulfillmentOrganization: undefined, // НЕ исключаем - резолвер нужен! createEmployee: undefined, updateEmployee: undefined, deleteEmployee: undefined, assignLogisticsToSupply: undefined, logisticsConfirmOrder: undefined, logisticsRejectOrder: undefined, }, // Остальные типы пока оставляем из старых резолверов User: oldResolvers.User, Organization: oldResolvers.Organization, Product: oldResolvers.Product, // SupplyOrder: oldResolvers.SupplyOrder, // Удалено: отсутствует в старых резолверах // Employee берем из нового модуля Employee: undefined, }, // НОВЫЕ модульные резолверы ПОСЛЕ старых - чтобы они перезаписали старые authResolvers, employeeResolvers, logisticsResolvers, suppliesResolvers, referralResolvers, ) export const resolvers = mergedResolvers