import { Module } from '@nestjs/common';
import { PrismaModule } from '@core/database/prisma/prisma.module';

// Controllers
import { PartsController } from './parts.controller';
import { InventoryController } from './inventory.controller';
import { LabelsController } from './labels.controller';
import { AlertsController } from './alerts.controller';
import { ExcelController } from './excel.controller';
import { ColumnConfigController } from './column-config.controller';
import { PartGroupsController } from './controllers/part-groups.controller';
import { WarehouseController } from './controllers/warehouse.controller';
import { StorageLocationController } from './controllers/storage-location.controller';
import { StationController } from './controllers/station.controller';

// Services
import { PartsService } from './services/parts.service';
import { InventoryService } from './services/inventory.service';
import { LabelService } from './services/label.service';
import { AlertService } from './services/alert.service';
import { ExcelService } from './services/excel.service';
import { ColumnConfigService } from './services/column-config.service';
import { PartGroupsService } from './services/part-groups.service';
import { WarehouseService } from './services/warehouse.service';
import { StorageLocationService } from './services/storage-location.service';
import { StationService } from './services/station.service';

@Module({
  imports: [PrismaModule],
  controllers: [
    // 注意：更具体的路由要先注册，避免被通用路由拦截
    PartGroupsController,      // /parts/groups - 必须在 PartsController 之前
    ColumnConfigController,     // /parts/columns/configs
    ExcelController,            // /parts/excel
    PartsController,            // /parts/:id - 通用路由放后面
    InventoryController,
    LabelsController,
    AlertsController,
    WarehouseController,
    StorageLocationController,
    StationController,
  ],
  providers: [
    PartsService,
    InventoryService,
    LabelService,
    AlertService,
    ExcelService,
    ColumnConfigService,
    PartGroupsService,
    WarehouseService,
    StorageLocationService,
    StationService,
  ],
  exports: [
    PartsService,
    InventoryService,
    LabelService,
    AlertService,
    ExcelService,
    ColumnConfigService,
    PartGroupsService,
    WarehouseService,
    StorageLocationService,
    StationService,
  ],
})
export class PartsModule {}

