// import { resolvers as oldResolvers } from '../resolvers' // LEGACY: Монолитный файл больше не используется
import { JSONScalar, DateTimeScalar } from '../scalars'

import { adminToolsResolvers } from './domains/admin-tools'
import { analyticsResolvers } from './domains/analytics'
import { authResolvers } from './domains/auth'
import { cartResolvers } from './domains/cart'
import { catalogResolvers } from './domains/catalog'
import { counterpartyManagementResolvers } from './domains/counterparty-management'
import { employeeResolvers as employeeDomainResolvers } from './domains/employee'
import { externalAdsResolvers } from './domains/external-ads'
import { fileManagementResolvers } from './domains/file-management'
import { inventoryResolvers as inventoryDomainResolvers } from './domains/inventory'
import { logisticsDomainResolvers } from './domains/logistics'
import { logisticsConsumablesResolvers as logisticsConsumablesDomainResolvers } from './domains/logistics-consumables'
import { messagingResolvers } from './domains/messaging'
import { organizationManagementResolvers } from './domains/organization-management'
import { productsResolvers } from './domains/products'
import { referralResolvers as referralDomainResolvers } from './domains/referrals'
import { sellerConsumablesResolvers } from './domains/seller-consumables'
import { sellerGoodsResolvers as sellerGoodsDomainResolvers } from './domains/seller-goods'
import { servicesResolvers as servicesDomainResolvers } from './domains/services'
import { suppliesResolvers } from './domains/supplies'
import { supplyOrdersResolvers } from './domains/supply-orders'
import { userManagementResolvers } from './domains/user-management'
import { wildberriesResolvers } from './domains/wildberries'
// V2 импорты удалены - заменены на доменные резолверы
// import { integrateSecurityWithExistingResolvers } from './secure-integration' // ВРЕМЕННО ОТКЛЮЧЕНО - экспорты не найдены
// import { secureSuppliesResolvers } from './secure-supplies' // ВРЕМЕННО ОТКЛЮЧЕНО - экспорты не найдены
// import { suppliesResolvers } from './supplies' // ЗАМЕНЕН на domains/supplies

// Типы для резолверов
interface ResolverObject {
  Query?: Record<string, unknown>
  Mutation?: Record<string, unknown>
  [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: Постепенно убрать это после полного рефакторинга

// V2 отладочные сообщения удалены

// Объединяем новые модульные резолверы с остальными старыми
const mergedResolvers = mergeResolvers(
  // Скалярные типы
  {
    JSON: JSONScalar,
    DateTime: DateTimeScalar,
  },

  // LEGACY REMOVED: Все резолверы мигрированы в доменную архитектуру
  {
    Query: {}, // Пустой - все Query мигрированы в домены
    Mutation: {}, // Пустой - все Mutation мигрированы в домены
    // Все типовые резолверы мигрированы в соответствующие домены
    User: undefined, // User берем из userManagementResolvers
    Organization: undefined, // Organization берем из organizationManagementResolvers
    Product: undefined, // Product берем из productsResolvers
    Employee: undefined, // Employee берем из employeeDomainResolvers
    Cart: undefined, // Cart берем из cartResolvers
    CartItem: undefined, // CartItem берем из cartResolvers
  },

  // НОВЫЕ модульные резолверы - все домены включены после диагностики
  authResolvers,
  cartResolvers,  // Корзина - базовая функциональность
  catalogResolvers,  // Каталог - базовая функциональность  
  userManagementResolvers,  // Пользователи - базовая функциональность
  organizationManagementResolvers,  // Организации - базовая функциональность
  employeeDomainResolvers,  // Employee домен V2
  
  // Восстановленные домены после диагностики:
  messagingResolvers,  
  productsResolvers,
  supplyOrdersResolvers, 
  counterpartyManagementResolvers,
  suppliesResolvers,
  logisticsDomainResolvers,  // assignLogisticsToSupply исправлен
  referralDomainResolvers,
  servicesDomainResolvers,
  inventoryDomainResolvers,
  sellerGoodsDomainResolvers,
  logisticsConsumablesDomainResolvers,
  wildberriesResolvers,  // все Query/Mutation соответствуют схеме
  analyticsResolvers,
  adminToolsResolvers,
  fileManagementResolvers,
  externalAdsResolvers,
  sellerConsumablesResolvers,
  
  // БЕЗОПАСНЫЕ резолверы поставок - ВРЕМЕННО ОТКЛЮЧЕНО
  // secureSuppliesResolvers,
  
  // НОВЫЕ резолверы для системы поставок v2 - ЗАМЕНЕНЫ на inventoryDomainResolvers
  // {
  //   Query: fulfillmentConsumableV2Queries,
  //   Mutation: fulfillmentConsumableV2Mutations,
  // },
  
  // НОВЫЕ резолверы для системы поставок селлера - ЗАМЕНЕНЫ на sellerConsumablesResolvers
  // {
  //   Query: sellerConsumableQueries,
  //   Mutation: sellerConsumableMutations,
  // },
  
  // НОВЫЕ резолверы для услуг фулфилмента V2 - ЗАМЕНЕНЫ на servicesDomainResolvers
  // {
  //   Query: fulfillmentServicesQueries,
  //   Mutation: fulfillmentServicesMutations,
  // },
  
  // V2 Seller Goods резолверы - ЗАМЕНЕНЫ на sellerGoodsDomainResolvers
  // {
  //   Query: sellerGoodsQueries,
  //   Mutation: sellerGoodsMutations,
  // },
  
  // V2 Logistics Consumables резолверы - ЗАМЕНЕНЫ на logisticsConsumablesDomainResolvers
  // {
  //   Query: logisticsConsumableV2Queries,
  //   Mutation: logisticsConsumableV2Mutations,
  // },
  
  // V2 Inventory резолверы - ЗАМЕНЕНЫ на inventoryDomainResolvers (расширенный)
  // {
  //   Query: {
  //     ...fulfillmentInventoryV2Queries,
  //     ...sellerInventoryV2Queries,
  //   },
  // },
)

// Отладочная информация удалена - миграция завершена

// Security middleware временно отключен - требуется исправление экспортов
// const securedResolvers = integrateSecurityWithExistingResolvers(mergedResolvers)

// Используем резолверы напрямую (security middleware отключен)
export const resolvers = mergedResolvers
