import "reflect-metadata";
import { config } from "dotenv";
import { DataSource } from "typeorm";
import { AdminUser } from "./auth/entities/admin-user.entity";
import { ContentBlock } from "./content/entities/content-block.entity";
import { Page } from "./content/entities/page.entity";
import { MediaAsset } from "./media/entities/media-asset.entity";
import { FaqItem } from "./faq/entities/faq-item.entity";
import { PageView } from "./analytics/entities/page-view.entity";

config();

// Used by the TypeORM CLI (migration:run/generate/revert) and by the seed
// script — the running Nest app builds its own connection from
// AppModule/TypeOrmModule.forRootAsync instead, but points at the same
// entities/migrations so both stay in sync.
export const AppDataSource = new DataSource({
  type: "mysql",
  host: process.env.DB_HOST ?? "127.0.0.1",
  port: Number(process.env.DB_PORT ?? 3306),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  entities: [AdminUser, Page, ContentBlock, MediaAsset, FaqItem, PageView],
  migrations: [__dirname + "/database/migrations/*.{ts,js}"],
  synchronize: false,
});
