// src/server/shared/db/client.ts
// Database connection client using Drizzle ORM + MySQL2

import { drizzle } from 'drizzle-orm/mysql2';
import mysql from 'mysql2/promise';
import * as schema from './schema';
import { loggerService } from '../lib/logger';

// Get DB channel logger
const dbLogger = loggerService.get('DB');

// Create a connection pool
const pool = mysql.createPool({
  host: process.env.DB_HOST || 'localhost',
  port: Number(process.env.DB_PORT) || 3306,
  user: process.env.DB_USER || 'root',
  password: process.env.DB_PASSWORD, // <-- Это критически важная строка
  database: process.env.DB_NAME || 'hotel_erp',
  multipleStatements: true,
});

// Initialize Drizzle with the pool and logger
// mode: 'default' автоматически парсит JSON колонки в объекты вместо строк
export const db = drizzle(pool, {
  schema,
  mode: 'default',
  logger: {
    logQuery: (query, params) => {
      dbLogger.debug(`Query: ${query}`, params);
    },
  },
});

// Export pool for raw queries if needed
export { pool };