split in env required and dynamic values
This commit is contained in:
parent
f32143b7ac
commit
730c25a9a1
35 changed files with 491 additions and 198 deletions
|
@ -2,16 +2,13 @@ import { MigrationInterface, QueryRunner, Table } from "typeorm";
|
|||
import BackupHelper from "../helpers/backupHelper";
|
||||
import { getDefaultByORM, getTypeByORM, isIncrementPrimary } from "./ormHelper";
|
||||
import InternalException from "../exceptions/internalException";
|
||||
import { SettingHelper } from "../helpers/settingsHelper";
|
||||
import { DB_TYPE } from "../env.defaults";
|
||||
|
||||
export class BackupAndResetDatabase1738166124200 implements MigrationInterface {
|
||||
name = "BackupAndResetDatabase1738166124200";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
let query =
|
||||
SettingHelper.getEnvSetting("database.type") == "postgres"
|
||||
? "SELECT name FROM migrations"
|
||||
: "SELECT `name` FROM `migrations`";
|
||||
let query = DB_TYPE == "postgres" ? "SELECT name FROM migrations" : "SELECT `name` FROM `migrations`";
|
||||
let migrations = await queryRunner.query(query);
|
||||
if (
|
||||
(await queryRunner.hasTable("user")) &&
|
||||
|
|
|
@ -54,7 +54,7 @@ import {
|
|||
newsletter_recipients_table,
|
||||
newsletter_table,
|
||||
} from "./baseSchemaTables/newsletter";
|
||||
import { SettingHelper } from "../helpers/settingsHelper";
|
||||
import { DB_TYPE } from "../env.defaults";
|
||||
|
||||
export class CreateSchema1738166167472 implements MigrationInterface {
|
||||
name = "CreateSchema1738166167472";
|
||||
|
@ -84,7 +84,6 @@ export class CreateSchema1738166167472 implements MigrationInterface {
|
|||
await queryRunner.createTable(member_executive_positions_table, true, true, true);
|
||||
await queryRunner.createTable(member_qualifications_table, true, true, true);
|
||||
|
||||
const DB_TYPE = SettingHelper.getEnvSetting("database.type");
|
||||
if (DB_TYPE == "postgres") await queryRunner.createView(member_view_postgres, true);
|
||||
else if (DB_TYPE == "mysql") await queryRunner.createView(member_view_mysql, true);
|
||||
else if (DB_TYPE == "sqlite") await queryRunner.createView(member_view_sqlite, true);
|
||||
|
|
30
src/migrations/1745059495808-settingsFromEnv.ts
Normal file
30
src/migrations/1745059495808-settingsFromEnv.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
import { setting_table } from "./baseSchemaTables/admin";
|
||||
import { envSettingsType } from "../type/settingTypes";
|
||||
import SettingHelper from "../helpers/settingsHelper";
|
||||
|
||||
export class SettingsFromEnv1745059495808 implements MigrationInterface {
|
||||
name = "SettingsFromEnv1745059495808";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.createTable(setting_table, true, true, true);
|
||||
|
||||
//transfer settings of env to database
|
||||
await SettingHelper.setSetting("club.name", process.env.CLUB_NAME);
|
||||
await SettingHelper.setSetting("club.website", process.env.CLUB_WEBSITE);
|
||||
await SettingHelper.setSetting("session.jwt_expiration", process.env.JWT_EXPIRATION);
|
||||
await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION);
|
||||
await SettingHelper.setSetting("session.pwa_refresh_expiration", process.env.PWA_REFRESH_EXPIRATION);
|
||||
await SettingHelper.setSetting("mail.username", process.env.MAIL_USERNAME);
|
||||
await SettingHelper.setSetting("mail.password", process.env.MAIL_PASSWORD);
|
||||
await SettingHelper.setSetting("mail.host", process.env.MAIL_HOST);
|
||||
await SettingHelper.setSetting("mail.port", process.env.MAIL_PORT);
|
||||
await SettingHelper.setSetting("mail.secure", process.env.MAIL_SECURE);
|
||||
await SettingHelper.setSetting("backup.interval", process.env.BACKUP_INTERVAL);
|
||||
await SettingHelper.setSetting("backup.copies", process.env.BACKUP_COPIES);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.dropTable(setting_table.name, true, true, true);
|
||||
}
|
||||
}
|
|
@ -148,3 +148,12 @@ export const reset_table = new Table({
|
|||
{ name: "secret", ...getTypeByORM("varchar") },
|
||||
],
|
||||
});
|
||||
|
||||
export const setting_table = new Table({
|
||||
name: "setting",
|
||||
columns: [
|
||||
{ name: "topic", ...getTypeByORM("varchar"), isPrimary: true },
|
||||
{ name: "key", ...getTypeByORM("varchar"), isPrimary: true },
|
||||
{ name: "value", ...getTypeByORM("text") },
|
||||
],
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { SettingHelper } from "../helpers/settingsHelper";
|
||||
import { DB_TYPE } from "../env.defaults";
|
||||
|
||||
export type ORMType = "int" | "bigint" | "boolean" | "date" | "datetime" | "time" | "text" | "varchar" | "uuid";
|
||||
export type ORMDefault = "currentTimestamp" | "string" | "boolean" | "number" | "null";
|
||||
|
@ -15,7 +15,7 @@ export type Primary = {
|
|||
};
|
||||
|
||||
export function getTypeByORM(type: ORMType, nullable: boolean = false, length: number = 255): ColumnConfig {
|
||||
const dbType = SettingHelper.getEnvSetting("database.type");
|
||||
const dbType = DB_TYPE;
|
||||
|
||||
const typeMap: Record<string, Record<ORMType, string>> = {
|
||||
mysql: {
|
||||
|
@ -65,7 +65,7 @@ export function getTypeByORM(type: ORMType, nullable: boolean = false, length: n
|
|||
}
|
||||
|
||||
export function getDefaultByORM<T = string | null>(type: ORMDefault, data?: string | number | boolean): T {
|
||||
const dbType = SettingHelper.getEnvSetting("database.type");
|
||||
const dbType = DB_TYPE;
|
||||
|
||||
const typeMap: Record<string, Record<ORMDefault, string | null>> = {
|
||||
mysql: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue