import { registerAs } from "@nestjs/config"; import { TypeOrmModuleOptions } from "@nestjs/typeorm"; import { DefaultPosition, DefaultUnit, EmployeePosition, Employee, OrganizationConfiguration, GlobalOrganizationConfiguration, OrganizationType, Organization, PositionConfiguration, PositionPermission, PositionTypeConfiguration, PositionTypePermission, PositionType, Position, Project, UnitConfiguration, GlobalUnitConfiguration, Unit, EmployeeSignature, EmployeeStamp, RecordFooter, RecordHeader, Seal, AccountConfiguration, Application, DocumentaryRequirement, Permission, RolePermission, Role, Session, UserCredential, UserDocument, UserRole, UserVerification, User, Notification, NotificationEvent, NotificationPlaceholder, NotificationReceiverField, NotificationReceiver, NotificationTemplate, } from "@tria-plc/iamapi-common"; import { OrganizationSetting } from "@tria-plc/iamapi-common/entities/iam/organization-structure/organization-setting.entity"; const iamEntities = [ DefaultPosition, DefaultUnit, EmployeePosition, Employee, OrganizationConfiguration, GlobalOrganizationConfiguration, OrganizationSetting, OrganizationType, Organization, PositionConfiguration, PositionPermission, PositionTypeConfiguration, PositionTypePermission, PositionType, Position, Project, UnitConfiguration, GlobalUnitConfiguration, Unit, EmployeeSignature, EmployeeStamp, RecordFooter, RecordHeader, Seal, AccountConfiguration, Application, DocumentaryRequirement, Permission, RolePermission, Role, Session, UserCredential, UserDocument, UserRole, UserVerification, User, Notification, NotificationEvent, NotificationPlaceholder, NotificationReceiverField, NotificationReceiver, NotificationTemplate, ]; export default registerAs( "database", (): TypeOrmModuleOptions => ({ type: "postgres", host: process.env.DB_HOST ?? "localhost", port: parseInt(process.env.DB_PORT ?? "5433", 10), username: process.env.DB_USER ?? "postgres", password: process.env.DB_PASSWORD ?? "", database: process.env.DB_NAME ?? "edr_freight", entities: [__dirname + "/../**/*.entity.{ts,js}", ...iamEntities], autoLoadEntities: true, migrations: [ // IAM schema + tables must be created before freight entity sync __dirname + "/../../node_modules/@tria-plc/iamapi-common/dist/db/migrations/*.js", __dirname + "/../../migrations/*.{ts,js}", ], migrationsRun: true, // Never enable synchronize in production. Use migrations. synchronize: process.env.NODE_ENV === "development", logging: process.env.NODE_ENV === "development", }), );