import { registerAs } from "@nestjs/config"
import { config as dotenvConfig } from "dotenv"
import { DataSource, DataSourceOptions } from "typeorm"
import * as process from "node:process"

dotenvConfig({
  path: process.env.NODE_ENV ? ".env." + process.env.NODE_ENV : ".env",
})
const config = {
  type: "postgres",
  host: process.env.DATABASE_HOST,
  port: `${process.env.DATABASE_PORT}`,
  username: `${process.env.DATABASE_USERNAME}`,
  password: `${process.env.DATABASE_PASSWORD}`,
  database: `${process.env.DATABASE_NAME}`,
  entities: ["dist/**/*.entity{.ts,.js}"],
  autoLoadEntities: true,
  synchronize: false,
  logging: process.env.ENABLE_TYPEORM_LOGGING == "true",
  extra: {
    options: "-c timezone=UTC",
  },
}

export default registerAs("typeorm", () => config)
export const connectionSource = new DataSource({
  ...(config as DataSourceOptions),
  migrations: ["src/database/migrations/*{.ts,.js}"],
})
