mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
129 lines
3.0 KiB
TypeScript
129 lines
3.0 KiB
TypeScript
import { registerAs } from "@nestjs/config";
|
|
import { TypeOrmModuleOptions } from "@nestjs/typeorm";
|
|
import { join, dirname } from "path";
|
|
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";
|
|
import { APPLICATION_SEARCH_PATH } from "./ensure-postgres-schemas";
|
|
|
|
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,
|
|
];
|
|
|
|
const iamMigrationsGlob = join(
|
|
dirname(require.resolve("@tria-plc/iamapi-common/package.json")),
|
|
"dist/db/migrations/*.js",
|
|
);
|
|
const freightMigrationsGlob = join(__dirname, "../migrations/*.js");
|
|
|
|
export default registerAs(
|
|
"database",
|
|
(): TypeOrmModuleOptions => {
|
|
return {
|
|
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",
|
|
schema: "public",
|
|
extra: {
|
|
options: `-c search_path=${APPLICATION_SEARCH_PATH}`,
|
|
},
|
|
entities: [__dirname + "/../**/*.entity.{ts,js}", ...iamEntities],
|
|
autoLoadEntities: true,
|
|
migrations: [
|
|
// IAM schema + tables must be created before freight migrations
|
|
iamMigrationsGlob,
|
|
freightMigrationsGlob,
|
|
],
|
|
migrationsRun: true,
|
|
// Schema changes via migrations only (synchronize breaks ITMLS backfill on existing rows).
|
|
synchronize: false,
|
|
logging: process.env.NODE_ENV === "development",
|
|
};
|
|
},
|
|
);
|