mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-10 07:07:21 +00:00

* task: add getCommunitiesV2 * task: update getOneSpace API to match revamp structure * refactor: implement modifications to pace management APIs * refactor: remove space link
142 lines
5.8 KiB
TypeScript
142 lines
5.8 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { DeviceEntity } from '../modules/device/entities';
|
|
import { PermissionTypeEntity } from '../modules/permission/entities';
|
|
import { ProductEntity } from '../modules/product/entities';
|
|
import { UserSessionEntity } from '../modules/session/entities/session.entity';
|
|
import { UserOtpEntity } from '../modules/user/entities';
|
|
import { UserEntity } from '../modules/user/entities/user.entity';
|
|
import { SnakeNamingStrategy } from './strategies';
|
|
|
|
import { TypeOrmWinstonLogger } from '@app/common/logger/services/typeorm.logger';
|
|
import { createLogger } from 'winston';
|
|
import { winstonLoggerOptions } from '../logger/services/winston.logger';
|
|
import { AqiSpaceDailyPollutantStatsEntity } from '../modules/aqi/entities';
|
|
import { AutomationEntity } from '../modules/automation/entities';
|
|
import { ClientEntity } from '../modules/client/entities';
|
|
import { CommunityEntity } from '../modules/community/entities';
|
|
import { DeviceStatusLogEntity } from '../modules/device-status-log/entities';
|
|
import {
|
|
DeviceNotificationEntity,
|
|
DeviceUserPermissionEntity,
|
|
} from '../modules/device/entities';
|
|
import {
|
|
InviteUserEntity,
|
|
InviteUserSpaceEntity,
|
|
} from '../modules/Invite-user/entities';
|
|
import { SpaceDailyOccupancyDurationEntity } from '../modules/occupancy/entities';
|
|
import {
|
|
PowerClampDailyEntity,
|
|
PowerClampHourlyEntity,
|
|
PowerClampMonthlyEntity,
|
|
} from '../modules/power-clamp/entities/power-clamp.entity';
|
|
import {
|
|
PresenceSensorDailyDeviceEntity,
|
|
PresenceSensorDailySpaceEntity,
|
|
} from '../modules/presence-sensor/entities';
|
|
import { ProjectEntity } from '../modules/project/entities';
|
|
import { RegionEntity } from '../modules/region/entities';
|
|
import { RoleTypeEntity } from '../modules/role-type/entities';
|
|
import { SceneDeviceEntity } from '../modules/scene-device/entities';
|
|
import { SceneEntity, SceneIconEntity } from '../modules/scene/entities';
|
|
import {
|
|
SpaceModelEntity,
|
|
SpaceModelProductAllocationEntity,
|
|
SubspaceModelEntity,
|
|
SubspaceModelProductAllocationEntity,
|
|
} from '../modules/space-model/entities';
|
|
import { InviteSpaceEntity } from '../modules/space/entities/invite-space.entity';
|
|
import { SpaceProductAllocationEntity } from '../modules/space/entities/space-product-allocation.entity';
|
|
import { SpaceEntity } from '../modules/space/entities/space.entity';
|
|
import { SubspaceProductAllocationEntity } from '../modules/space/entities/subspace/subspace-product-allocation.entity';
|
|
import { SubspaceEntity } from '../modules/space/entities/subspace/subspace.entity';
|
|
import { NewTagEntity } from '../modules/tag/entities/tag.entity';
|
|
import { TimeZoneEntity } from '../modules/timezone/entities';
|
|
import {
|
|
UserNotificationEntity,
|
|
UserSpaceEntity,
|
|
} from '../modules/user/entities';
|
|
import { VisitorPasswordEntity } from '../modules/visitor-password/entities';
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
useFactory: (configService: ConfigService) => {
|
|
const winstonLogger = createLogger(winstonLoggerOptions);
|
|
const typeOrmLogger = new TypeOrmWinstonLogger(winstonLogger);
|
|
return {
|
|
name: 'default',
|
|
type: 'postgres',
|
|
host: configService.get('DB_HOST'),
|
|
port: configService.get('DB_PORT'),
|
|
username: configService.get('DB_USER'),
|
|
password: configService.get('DB_PASSWORD'),
|
|
database: configService.get('DB_NAME'),
|
|
entities: [
|
|
NewTagEntity,
|
|
ProjectEntity,
|
|
UserEntity,
|
|
UserSessionEntity,
|
|
UserOtpEntity,
|
|
ProductEntity,
|
|
DeviceUserPermissionEntity,
|
|
DeviceEntity,
|
|
PermissionTypeEntity,
|
|
CommunityEntity,
|
|
SpaceEntity,
|
|
SubspaceEntity,
|
|
UserSpaceEntity,
|
|
DeviceUserPermissionEntity,
|
|
RoleTypeEntity,
|
|
UserNotificationEntity,
|
|
DeviceNotificationEntity,
|
|
RegionEntity,
|
|
TimeZoneEntity,
|
|
VisitorPasswordEntity,
|
|
DeviceStatusLogEntity,
|
|
SceneEntity,
|
|
SceneIconEntity,
|
|
SceneDeviceEntity,
|
|
SpaceModelEntity,
|
|
SubspaceModelEntity,
|
|
InviteUserEntity,
|
|
InviteUserSpaceEntity,
|
|
InviteSpaceEntity,
|
|
AutomationEntity,
|
|
SpaceModelProductAllocationEntity,
|
|
SubspaceModelProductAllocationEntity,
|
|
SpaceProductAllocationEntity,
|
|
SubspaceProductAllocationEntity,
|
|
ClientEntity,
|
|
PowerClampHourlyEntity,
|
|
PowerClampDailyEntity,
|
|
PowerClampMonthlyEntity,
|
|
PresenceSensorDailyDeviceEntity,
|
|
PresenceSensorDailySpaceEntity,
|
|
AqiSpaceDailyPollutantStatsEntity,
|
|
SpaceDailyOccupancyDurationEntity,
|
|
],
|
|
namingStrategy: new SnakeNamingStrategy(),
|
|
synchronize: Boolean(JSON.parse(configService.get('DB_SYNC'))),
|
|
logging: ['query', 'error', 'warn', 'schema', 'migration'],
|
|
|
|
logger: typeOrmLogger,
|
|
extra: {
|
|
charset: 'utf8mb4',
|
|
max: 20, // set pool max size
|
|
idleTimeoutMillis: 5000, // close idle clients after 5 second
|
|
connectionTimeoutMillis: 12_000, // return an error after 11 second if connection could not be established
|
|
maxUses: 7500, // close (and replace) a connection after it has been used 7500 times (see below for discussion)
|
|
},
|
|
continuationLocalStorage: true,
|
|
ssl: Boolean(JSON.parse(configService.get('DB_SSL'))),
|
|
};
|
|
},
|
|
}),
|
|
],
|
|
providers: [TypeOrmWinstonLogger],
|
|
})
|
|
export class DatabaseModule {}
|