mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-10 07:07:21 +00:00
116 lines
4.3 KiB
TypeScript
116 lines
4.3 KiB
TypeScript
import { SeederModule } from '@app/common/seed/seeder.module';
|
|
import { Module } from '@nestjs/common';
|
|
import { ConfigModule } from '@nestjs/config';
|
|
import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
|
|
import { WinstonModule } from 'nest-winston';
|
|
import { AuthenticationModule } from './auth/auth.module';
|
|
import { AutomationModule } from './automation/automation.module';
|
|
import { ClientModule } from './client/client.module';
|
|
import { DeviceCommissionModule } from './commission-device/commission-device.module';
|
|
import { CommunityModule } from './community/community.module';
|
|
import config from './config';
|
|
import { DeviceMessagesSubscriptionModule } from './device-messages/device-messages.module';
|
|
import { DeviceModule } from './device/device.module';
|
|
import { DoorLockModule } from './door-lock/door.lock.module';
|
|
import { GroupModule } from './group/group.module';
|
|
import { HealthModule } from './health/health.module';
|
|
import { LoggingInterceptor } from './interceptors/logging.interceptor';
|
|
import { InviteUserModule } from './invite-user/invite-user.module';
|
|
import { PermissionModule } from './permission/permission.module';
|
|
import { PowerClampModule } from './power-clamp/power-clamp.module';
|
|
import { PrivacyPolicyModule } from './privacy-policy/privacy-policy.module';
|
|
import { ProductModule } from './product';
|
|
import { ProjectModule } from './project';
|
|
import { RegionModule } from './region/region.module';
|
|
import { RoleModule } from './role/role.module';
|
|
import { SceneModule } from './scene/scene.module';
|
|
import { ScheduleModule } from './schedule/schedule.module';
|
|
import { SpaceModelModule } from './space-model';
|
|
import { SpaceModule } from './space/space.module';
|
|
import { TagModule } from './tags/tags.module';
|
|
import { TermsConditionsModule } from './terms-conditions/terms-conditions.module';
|
|
import { TimeZoneModule } from './timezone/timezone.module';
|
|
import { UserDevicePermissionModule } from './user-device-permission/user-device-permission.module';
|
|
import { UserNotificationModule } from './user-notification/user-notification.module';
|
|
import { UserModule } from './users/user.module';
|
|
import { VisitorPasswordModule } from './vistor-password/visitor-password.module';
|
|
|
|
import { ThrottlerGuard } from '@nestjs/throttler';
|
|
import { ThrottlerModule } from '@nestjs/throttler/dist/throttler.module';
|
|
import { isArray } from 'class-validator';
|
|
import { winstonLoggerOptions } from '../libs/common/src/logger/services/winston.logger';
|
|
import { AqiModule } from './aqi/aqi.module';
|
|
import { OccupancyModule } from './occupancy/occupancy.module';
|
|
import { WeatherModule } from './weather/weather.module';
|
|
import { ScheduleModule as NestScheduleModule } from '@nestjs/schedule';
|
|
import { SchedulerModule } from './scheduler/scheduler.module';
|
|
import { BookingModule } from './booking';
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
load: config,
|
|
}),
|
|
ThrottlerModule.forRoot({
|
|
throttlers: [{ ttl: 60000, limit: 100 }],
|
|
generateKey: (context) => {
|
|
const req = context.switchToHttp().getRequest();
|
|
console.log('Real IP:', req.headers['x-forwarded-for']);
|
|
return req.headers['x-forwarded-for']
|
|
? isArray(req.headers['x-forwarded-for'])
|
|
? req.headers['x-forwarded-for'][0].split(':')[0]
|
|
: req.headers['x-forwarded-for'].split(':')[0]
|
|
: req.ip;
|
|
},
|
|
}),
|
|
WinstonModule.forRoot(winstonLoggerOptions),
|
|
ClientModule,
|
|
AuthenticationModule,
|
|
UserModule,
|
|
InviteUserModule,
|
|
CommunityModule,
|
|
|
|
SpaceModule,
|
|
SpaceModelModule,
|
|
GroupModule,
|
|
DeviceModule,
|
|
DeviceMessagesSubscriptionModule,
|
|
UserDevicePermissionModule,
|
|
UserNotificationModule,
|
|
SeederModule,
|
|
SceneModule,
|
|
AutomationModule,
|
|
DoorLockModule,
|
|
RegionModule,
|
|
TimeZoneModule,
|
|
VisitorPasswordModule,
|
|
ScheduleModule,
|
|
ProductModule,
|
|
ProjectModule,
|
|
PermissionModule,
|
|
RoleModule,
|
|
TermsConditionsModule,
|
|
PrivacyPolicyModule,
|
|
TagModule,
|
|
DeviceCommissionModule,
|
|
PowerClampModule,
|
|
HealthModule,
|
|
OccupancyModule,
|
|
WeatherModule,
|
|
AqiModule,
|
|
SchedulerModule,
|
|
NestScheduleModule.forRoot(),
|
|
BookingModule,
|
|
],
|
|
providers: [
|
|
{
|
|
provide: APP_INTERCEPTOR,
|
|
useClass: LoggingInterceptor,
|
|
},
|
|
{
|
|
provide: APP_GUARD,
|
|
useClass: ThrottlerGuard,
|
|
},
|
|
],
|
|
})
|
|
export class AppModule {}
|