fix: migrations and discontinue sqlite

This commit is contained in:
Julian Krauser 2025-05-03 09:08:15 +02:00
parent c4e547b288
commit c35b99e0c4
6 changed files with 37 additions and 33 deletions

View file

@ -1,4 +1,4 @@
DB_TYPE = (mysql|sqlite|postgres) # default ist mysql
DB_TYPE = (mysql|postgres) # default ist mysql
## BSP für mysql
DB_PORT = 3306
@ -14,9 +14,6 @@ DB_NAME = database_name
DB_USERNAME = database_username
DB_PASSWORD = database_password
## BSP für sqlite
DB_HOST = filename.db
## Dev only
SERVER_PORT = portnumber

View file

@ -1,7 +1,6 @@
import { dataSource } from "../../../data-source";
import { setting } from "../../../entity/management/setting";
import DatabaseActionException from "../../../exceptions/databaseActionException";
import { StringHelper } from "../../../helpers/stringHelper";
import { CreateOrUpdateSettingCommand, DeleteSettingCommand } from "./settingCommand";
export default abstract class SettingCommandHandler {
@ -11,8 +10,6 @@ export default abstract class SettingCommandHandler {
* @returns {Promise<string>}
*/
static async create(createSetting: CreateOrUpdateSettingCommand): Promise<string> {
const token = StringHelper.random(32);
return await dataSource
.createQueryBuilder()
.insert()
@ -25,7 +22,7 @@ export default abstract class SettingCommandHandler {
.orUpdate(["value"], ["topic", "key"])
.execute()
.then((result) => {
return token;
return createSetting.value;
})
.catch((err) => {
throw new DatabaseActionException("CREATE OR UPDATE", "setting", err);

View file

@ -54,6 +54,7 @@ import { NewsletterColumnType1744351418751 } from "./migrations/1744351418751-ne
import { QueryUpdatedAt1744795756230 } from "./migrations/1744795756230-QueryUpdatedAt";
import { SettingsFromEnv1745059495808 } from "./migrations/1745059495808-settingsFromEnv";
import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt";
import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine";
const dataSource = new DataSource({
type: DB_TYPE as any,
@ -116,6 +117,7 @@ const dataSource = new DataSource({
NewsletterColumnType1744351418751,
QueryUpdatedAt1744795756230,
SettingsFromEnv1745059495808,
SettingsFromEnv_SET1745059495808,
MemberCreatedAt1746006549262,
],
migrationsRun: true,

View file

@ -39,15 +39,11 @@ export const TRUST_PROXY = ((): Array<string> | string | boolean | number | null
})();
export function configCheck() {
if (DB_TYPE != "mysql" && DB_TYPE != "sqlite" && DB_TYPE != "postgres")
throw new Error("set valid value to DB_TYPE (mysql|sqlite|postgres)");
if ((DB_HOST == "" || typeof DB_HOST != "string") && DB_TYPE != "sqlite")
throw new Error("set valid value to DB_HOST");
if (DB_TYPE != "mysql" && DB_TYPE != "postgres") throw new Error("set valid value to DB_TYPE (mysql|postgres)");
if (DB_HOST == "" || typeof DB_HOST != "string") throw new Error("set valid value to DB_HOST");
if (DB_NAME == "" || typeof DB_NAME != "string") throw new Error("set valid value to DB_NAME");
if ((DB_USERNAME == "" || typeof DB_USERNAME != "string") && DB_TYPE != "sqlite")
throw new Error("set valid value to DB_USERNAME");
if ((DB_PASSWORD == "" || typeof DB_PASSWORD != "string") && DB_TYPE != "sqlite")
throw new Error("set valid value to DB_PASSWORD");
if (DB_USERNAME == "" || typeof DB_USERNAME != "string") throw new Error("set valid value to DB_USERNAME");
if (DB_PASSWORD == "" || typeof DB_PASSWORD != "string") throw new Error("set valid value to DB_PASSWORD");
if (isNaN(SERVER_PORT)) throw new Error("set valid numeric value to SERVER_PORT");

View file

@ -8,23 +8,6 @@ export class SettingsFromEnv1745059495808 implements MigrationInterface {
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 as ms.StringValue);
await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION as ms.StringValue);
await SettingHelper.setSetting(
"session.pwa_refresh_expiration",
process.env.PWA_REFRESH_EXPIRATION as ms.StringValue
);
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", Number(process.env.MAIL_PORT));
await SettingHelper.setSetting("mail.secure", Boolean(process.env.MAIL_SECURE));
await SettingHelper.setSetting("backup.interval", Number(process.env.BACKUP_INTERVAL));
await SettingHelper.setSetting("backup.copies", Number(process.env.BACKUP_COPIES));
}
public async down(queryRunner: QueryRunner): Promise<void> {

View file

@ -0,0 +1,29 @@
import { MigrationInterface, QueryRunner } from "typeorm";
import { setting_table } from "./baseSchemaTables/admin";
import SettingHelper from "../helpers/settingsHelper";
import ms from "ms";
export class SettingsFromEnv_SET1745059495808 implements MigrationInterface {
name = "SettingsFromEnv_SET1745059495808";
public async up(queryRunner: QueryRunner): Promise<void> {
// 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 as ms.StringValue);
await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION as ms.StringValue);
await SettingHelper.setSetting(
"session.pwa_refresh_expiration",
process.env.PWA_REFRESH_EXPIRATION as ms.StringValue
);
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", Number(process.env.MAIL_PORT ?? "578"));
await SettingHelper.setSetting("mail.secure", Boolean(process.env.MAIL_SECURE ?? "false"));
await SettingHelper.setSetting("backup.interval", Number(process.env.BACKUP_INTERVAL ?? "1"));
await SettingHelper.setSetting("backup.copies", Number(process.env.BACKUP_COPIES ?? "7"));
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}