import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';
import { MongooseModule } from '@nestjs/mongoose';
import { ConfigModule } from '@nestjs/config';
import { JwtModule, JwtService } from '@nestjs/jwt';
import { User, UserSchema } from './schema/user.schema';
import { AdminModule } from './admin/admin.module';
import { Admin, AdminSchema } from './schema/admin.schema';
import {
  Shipment_Mode,
  Shipment_Mode_Schema,
} from './schema/map-shipment-mode.schema';
import { TwilioModule } from 'nestjs-twilio';
import { TWILIO_CREDS } from 'config/twilio.config';

@Module({
  imports: [
    AdminModule,
    UsersModule,
    ConfigModule.forRoot({ isGlobal: true }),
    MongooseModule.forRoot(process.env.MONGO_URI),
    MongooseModule.forFeature([
      { name: Admin.name, schema: AdminSchema },
      { name: User.name, schema: UserSchema },
      { name: Shipment_Mode.name, schema: Shipment_Mode_Schema },
    ]),
    JwtModule.register({
      global: true,
      secret: process.env.JWT_SECRET_KEY,
      signOptions: { expiresIn: '60s' },
    }),
    TwilioModule.forRoot({
      accountSid: TWILIO_CREDS?.accountSid,
      authToken: TWILIO_CREDS?.authToken,
    }),
  ],
  controllers: [AppController],
  providers: [AppService, JwtService],
})
export class AppModule {}
