import { DataSource } from 'typeorm';
import { join } from 'path';

// Load .env when running migrations via CLI (Nest doesn't run this file)
require('dotenv').config({ path: join(__dirname, '..', '.env') });

const migrationsDir = join(__dirname, 'migrations');

export const AppDataSource = new DataSource({
  type: 'postgres',
  host: process.env.DB_HOST || 'localhost',
  port: parseInt(process.env.DB_PORT || '5432', 10),
  username: process.env.DB_USERNAME || 'postgres',
  password: process.env.DB_PASSWORD || 'postgres',
  database: process.env.DB_DATABASE || 'deployhub',
  entities: [join(__dirname, 'entities', '*.entity{.ts,.js}')],
  migrations: [
    join(migrationsDir, '1730000000000-InitialSchema{.ts,.js}'),
    join(migrationsDir, '1710316800000-AddUserAdminFields{.ts,.js}'),
    join(migrationsDir, '1710320000000-AddPasswordToUsers{.ts,.js}'),
    join(migrationsDir, '1730000000001-AddShortCode{.ts,.js}'),
    join(migrationsDir, '1730000000002-AddUpdateDescription{.ts,.js}'),
    join(migrationsDir, '1730000000003-AddIconFileId{.ts,.js}'),
    join(migrationsDir, '1730000000004-AddUdids{.ts,.js}'),
    join(migrationsDir, '1772529826115-AddProvisioningProfileToBuild{.ts,.js}'),
    join(migrationsDir, '1772529826116-AddIconFileIdToApps{.ts,.js}'),
    join(migrationsDir, '1772529826117-AddProfilePhotoToUsers{.ts,.js}'),
    join(migrationsDir, '1773000000000-AddPasswordProtectionAndUploaderSettings{.ts,.js}'),
    join(migrationsDir, '1773727900000-AddPasswordTextToBuild{.ts,.js}'),
    join(migrationsDir, '1774000000000-AddIconDataToApps{.ts,.js}'),
    join(migrationsDir, '1774000000001-DefaultShowUploaderInfoFalse{.ts,.js}'),
    join(migrationsDir, '1775000000000-AddPlatformSettings{.ts,.js}'),
    join(migrationsDir, '1775000000001-AddUserSettings{.ts,.js}'),
    join(migrationsDir, '1776000000000-AddApiKeys{.ts,.js}'),
    join(migrationsDir, '1777000000000-AddBuildSizeAndCicd{.ts,.js}'),
  ],
  synchronize: false,
});
