sql: quitar el prefijo home_ de los ficheros que quedaron atrás

El renombrado de las 41 tablas (cccc703) no llegó a los ficheros SQL ni a los
generadores, así que seguían creando y consultando tablas home_* que ya no
existen: aplicarlos hoy no reproducía el portal.

- 12 ficheros pasan a las tablas reales (store_item, stripelog, noticia, ...).
- Los 6 que llevaban el prefijo en el NOMBRE se renombran también; nada los
  referenciaba.
- gen_store_catalog.py leía FROM home_store_item de django_wow (roto) y
  db2_to_sql.py generaba home_item_data; corregidos, con sus comentarios.
- add_stripelog_service.sql usaba ADD COLUMN IF NOT EXISTS, que es de MariaDB:
  en MySQL 9.7 daba error de sintaxis y no se podía aplicar (la columna se había
  puesto a mano en prod). Ahora es un ADD COLUMN normal, como su hermano.

Se dejan intactos sql/rename_home_prefix.sql y
sql/drop_home_securitytoken_authuser_fk.sql: son migraciones ya aplicadas y los
nombres home_* son parte de su historia.

Verificado importando todo en BD limpias: los ALTER dejan stripelog y noticia
con el esquema idéntico a producción, y la consulta de gen_store_catalog.py
devuelve filas.
This commit is contained in:
2026-07-16 21:23:29 +00:00
parent 011cae27fb
commit 9caa7b6c92
14 changed files with 58 additions and 57 deletions
+7 -7
View File
@@ -136,7 +136,7 @@ def db_items():
env = os.path.join(HERE, '..', '..', '.env.local')
cfg = dict(re.findall(r'^(\w+)=(.*)$', open(env, encoding='utf-8').read(), re.M))
q = ('SELECT category_code,item_id,name,IFNULL(icon,""),quantity,currency,price,'
'IFNULL(preview,""),sort FROM home_store_item ORDER BY sort,id')
'IFNULL(preview,""),sort FROM store_item ORDER BY sort,id')
out = subprocess.run(
['mysql', '-h', cfg.get('DB_HOST', '127.0.0.1'), '-u', cfg['DB_USER'],
f'-p{cfg["DB_PASSWORD"]}', '--default-character-set=utf8mb4', '-N', '--raw',
@@ -161,9 +161,9 @@ with open(OUT, 'w', encoding='utf-8') as f:
-- `css` es la clase de la CABECERA, que a veces sustituye a first-brown para
-- colorear la categoría entera (p.ej. "Brujo" en color de brujo).
SET NAMES utf8mb4;
DROP TABLE IF EXISTS home_store_item;
DROP TABLE IF EXISTS home_store_category;
CREATE TABLE home_store_category (
DROP TABLE IF EXISTS store_item;
DROP TABLE IF EXISTS store_category;
CREATE TABLE store_category (
id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(32) NOT NULL UNIQUE,
parent_code VARCHAR(32) NULL,
@@ -175,7 +175,7 @@ CREATE TABLE home_store_category (
sort INT NOT NULL,
KEY k_parent (parent_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE home_store_item (
CREATE TABLE store_item (
id INT AUTO_INCREMENT PRIMARY KEY,
category_code VARCHAR(32) NOT NULL,
item_id INT NOT NULL,
@@ -193,7 +193,7 @@ CREATE TABLE home_store_item (
""")
CH = 200
for i in range(0, len(cats), CH):
f.write('INSERT INTO home_store_category (code,parent_code,name,name_en,css,depth,sort) VALUES\n')
f.write('INSERT INTO store_category (code,parent_code,name,name_en,css,depth,sort) VALUES\n')
rows = []
for n, (code, parent, name, css, depth) in enumerate(cats[i:i + CH], start=i):
en = tr_html(name)
@@ -202,7 +202,7 @@ CREATE TABLE home_store_item (
f"'{esc(en)}'" if en else 'NULL', esc(css), depth, n))
f.write(',\n'.join(rows) + ';\n')
for i in range(0, len(items), CH):
f.write('INSERT INTO home_store_item (category_code,item_id,name,icon,quantity,currency,price,preview,sort) VALUES\n')
f.write('INSERT INTO store_item (category_code,item_id,name,icon,quantity,currency,price,preview,sort) VALUES\n')
rows = []
for cc, iid, nm, ic, qty, cur, pr, pv, so in items[i:i + CH]:
rows.append("('%s',%s,'%s',%s,%s,'%s',%s,%s,%s)" % (
+2 -2
View File
@@ -4,7 +4,7 @@ Es una LIBRERÍA: la usa `gen_store_catalog.py` para el `name_en` del seed.
Ejecutándolo se comprueban traducciones sueltas (nombres por stdin).
Prioridad: términos OFICIALES sacados de los DB2 del cliente (ChrClasses,
ItemSet, ItemSubClass) y de los nombres bilingües de home_item_data. Solo se
ItemSet, ItemSubClass) y de los nombres bilingües de item_data. Solo se
traduce a mano lo que la tienda se inventó y no existe en el juego.
"""
import json
@@ -41,7 +41,7 @@ OF = {k.lower(): v for k, v in oficial.items()}
# Términos extraídos de los nombres bilingües de ítem (no están en ItemSet:
# los sets de PvP de WotLK no son ItemSets reales). Verificados con
# `SELECT name_es, name_en FROM home_item_data WHERE name_es LIKE ...`.
# `SELECT name_es, name_en FROM item_data WHERE name_es LIKE ...`.
OF.update({
'gladiador furioso': 'Furious Gladiator',
'gladiador incansable': 'Relentless Gladiator',