Files
portabase/src/db/index.ts
T

81 lines
2.3 KiB
TypeScript
Raw Normal View History

2025-07-16 12:36:11 +02:00
import {drizzle} from "drizzle-orm/node-postgres";
import * as settings from "./schema/01_setting";
import * as user from "./schema/02_user";
import * as organisation from "./schema/03_organization";
import * as invitation from "./schema/04_member";
import * as member from "./schema/05_invitation";
import * as project from "./schema/06_project";
import * as agent from "./schema/08_agent";
import * as database from "./schema/07_database";
2025-11-09 16:47:58 +01:00
import * as notificationChannel from "./schema/09_notification-channel";
import * as organizationNotificationChannel from "./schema/09_notification-channel";
import * as alertPolicy from "./schema/10_alert-policy";
import * as notificationLog from "./schema/11_notification-log";
2026-01-12 21:16:52 +01:00
import * as storageChannel from "./schema/12_storage-channel";
import * as storagePolicy from "@/db/schema/13_storage-policy";
import * as backupStorage from "@/db/schema/14_storage-backup";
2026-03-28 16:35:02 +01:00
import * as healthcheckLog from "@/db/schema/15_healthcheck-log";
2025-07-16 12:36:11 +02:00
const log = logger.child({module: "db"});
2025-07-16 12:36:11 +02:00
import {Pool} from "pg";
// Do not delete
2025-05-16 15:54:17 +02:00
import dotenv from "dotenv";
2025-07-16 12:36:11 +02:00
import {migrate} from "drizzle-orm/node-postgres/migrator";
import {logger} from "@/lib/logger";
2025-05-16 15:54:17 +02:00
dotenv.config({
path: ".env",
});
2025-07-16 12:36:11 +02:00
const pool = new Pool({
connectionString: process.env.DATABASE_URL!,
2025-05-16 15:54:17 +02:00
});
2025-07-16 12:36:11 +02:00
export const schemas = {
...settings,
...user,
...organisation,
...invitation,
...member,
...project,
...agent,
2025-11-09 16:47:58 +01:00
...database,
...notificationChannel,
...organizationNotificationChannel,
...alertPolicy,
2026-01-12 21:16:52 +01:00
...notificationLog,
...storageChannel,
...storagePolicy,
2026-03-28 16:35:02 +01:00
...backupStorage,
...healthcheckLog
2025-07-16 12:36:11 +02:00
};
export const db = drizzle({
client: pool,
2025-11-08 20:07:49 +01:00
// logger: process.env.NODE_ENV != 'production',
2025-07-16 12:36:11 +02:00
schema: schemas,
2025-07-16 12:36:11 +02:00
});
export async function makeMigration() {
if (process.env.NODE_ENV != "development") {
const pool = new Pool({
connectionString: process.env.DATABASE_URL!,
});
const database = drizzle({client: pool});
log.info("Running migrations...");
2025-07-16 12:36:11 +02:00
try {
await migrate(database, {migrationsFolder: "./src/db/migrations"});
log.info("Migrations applied successfully.");
2025-07-16 12:36:11 +02:00
} catch (error) {
log.error({error: error}, "Error applying migrations:");
2025-07-16 12:36:11 +02:00
}
}
}