import { Module } from '@nestjs/common';
import { APP_GUARD } from '@nestjs/core';
import { ScheduleModule } from '@nestjs/schedule';
import { MerchantGuard } from './common/merchant.guard';
import { PrismaModule } from './common/prisma.module';
import { AuthModule } from './auth/auth.module';
import { OrdersModule } from './orders/orders.module';
import { IntegrationsModule } from './integrations/integrations.module';
import { DashboardModule } from './dashboard/dashboard.module';
import { AffiliatesModule } from './affiliates/affiliates.module';
import { CampaignsModule } from './campaigns/campaigns.module';
import { CouponsModule } from './coupons/coupons.module';
import { PayoutsModule } from './payouts/payouts.module';
import { SalesModule } from './sales/sales.module';
import { CommissionsModule } from './commissions/commissions.module';
import { SettingsModule } from './settings/settings.module';
import { MarketingModule } from './marketing/marketing.module';
import { FraudModule } from './fraud/fraud.module';
import { TrackingModule } from './tracking/tracking.module';

@Module({
  imports: [
    ScheduleModule.forRoot(),
    PrismaModule,
    AuthModule,
    OrdersModule,
    IntegrationsModule,
    DashboardModule,
    AffiliatesModule,
    CampaignsModule,
    CouponsModule,
    PayoutsModule,
    SalesModule,
    CommissionsModule,
    SettingsModule,
    MarketingModule,
    FraudModule,
    TrackingModule,
  ],
  providers: [
    // Global — locks /api/admin + /api/shopify to a valid Shopify session.
    { provide: APP_GUARD, useClass: MerchantGuard },
  ],
})
export class AppModule {}
