/**
 * MariaDB connection config — uses existing postsync_pro database.
 * Set STORAGE_BACKEND=mariadb (default when DB_HOST is set) or json for legacy files.
 */
export function getDbConfig() {
  return {
    host: process.env.DB_HOST?.trim() || process.env.MYSQL_HOST?.trim() || "127.0.0.1",
    port: Number(process.env.DB_PORT || process.env.MYSQL_PORT || 3306),
    user: process.env.DB_USER?.trim() || process.env.MYSQL_USER?.trim() || "root",
    password: process.env.DB_PASSWORD ?? process.env.MYSQL_PASSWORD ?? "",
    database:
      process.env.DB_NAME?.trim() ||
      process.env.MYSQL_DATABASE?.trim() ||
      "postsync_pro",
    waitForConnections: true,
    connectionLimit: Number(process.env.DB_POOL_SIZE || 10),
    enableKeepAlive: true,
    timezone: "Z",
    dateStrings: true,
  };
}

export type StorageBackend = "mariadb" | "json";

/** Prefer MariaDB when explicitly set or when DB_HOST/DB_NAME is configured. */
export function resolveStorageBackend(): StorageBackend {
  const forced = process.env.STORAGE_BACKEND?.trim().toLowerCase();
  if (forced === "json") return "json";
  if (forced === "mariadb" || forced === "mysql") return "mariadb";
  if (process.env.DB_HOST?.trim() || process.env.DB_NAME?.trim() || process.env.MYSQL_HOST?.trim()) {
    return "mariadb";
  }
  return "json";
}

export function isMariaDbEnabled(): boolean {
  return resolveStorageBackend() === "mariadb";
}
