import { MigrationInterface, QueryRunner } from "typeorm";
import { setting_table } from "./baseSchemaTables/admin";
import SettingHelper from "../helpers/settingsHelper";
import ms from "ms";

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 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> {
    await queryRunner.dropTable(setting_table.name, true, true, true);
  }
}