c36b543184
Pivote a Next.js full-stack (Django saldrá del todo en el cutover). Next accede a las mismas BD MySQL que Django: - lib/db.ts: pools mysql2 (django_wow + acore_*), singleton en globalThis, creds en web-next/.env.local (gitignored, copiadas del .env de Django). - lib/home.ts: getNoticias (home_noticia), getServerStatus (home_serverselection + online desde acore_characters + TCP check + expansión por gamebuild, incl. Classic). - app/page.tsx: home SSR que llama a lib/home (ya NO a la API Django). Se elimina lib/api.ts. Verificado: con el servicio Django PARADO, la home de Next sigue sirviendo 200 con datos reales -> lee MySQL directo, Django fuera del circuito. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import mysql from 'mysql2/promise'
|
|
|
|
// Pools de conexión a las mismas BD MySQL que usaba Django (django_wow + acore_*).
|
|
// Se guardan en globalThis para no crear pools nuevos en cada hot-reload de dev.
|
|
const g = globalThis as unknown as { _nwPools?: Record<string, mysql.Pool> }
|
|
g._nwPools ??= {}
|
|
|
|
export function db(database: string): mysql.Pool {
|
|
if (!g._nwPools![database]) {
|
|
g._nwPools![database] = mysql.createPool({
|
|
host: process.env.DB_HOST || '127.0.0.1',
|
|
port: Number(process.env.DB_PORT || 3306),
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database,
|
|
waitForConnections: true,
|
|
connectionLimit: 5,
|
|
namedPlaceholders: true,
|
|
})
|
|
}
|
|
return g._nwPools![database]
|
|
}
|
|
|
|
export const DB = {
|
|
default: process.env.DB_NAME_DEFAULT || 'django_wow',
|
|
auth: process.env.DB_NAME_AUTH || 'acore_auth',
|
|
characters: process.env.DB_NAME_CHARACTERS || 'acore_characters',
|
|
world: process.env.DB_NAME_WORLD || 'acore_world',
|
|
web: process.env.DB_NAME_WEB || 'acore_web',
|
|
}
|