-- Ejecutar UNA VEZ.
-- Registro de auditoría: CADA vez que a un usuario se le suman o restan
-- monedas/diamantes, queda una fila acá -- recargas (Wompi o manuales),
-- compras en la tienda, regalos del admin, recompensas por subir de
-- nivel, etc. Es de solo lectura desde el admin (nunca se edita a mano),
-- para poder rastrear cualquier movimiento sospechoso.
SET NAMES utf8mb4;

CREATE TABLE transacciones_monedas (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  usuario_id INT UNSIGNED NOT NULL,
  tipo VARCHAR(30) NOT NULL, -- 'recarga_wompi' | 'recarga_manual' | 'compra_tienda' | 'regalo_admin' | 'recompensa_nivel' | 'bono_bienvenida'
  monedas_delta INT NOT NULL DEFAULT 0,   -- puede ser negativo (una compra resta)
  diamantes_delta INT NOT NULL DEFAULT 0,
  motivo VARCHAR(200) DEFAULT NULL,
  referencia VARCHAR(100) DEFAULT NULL,   -- ej. referencia de Wompi, o el id del artículo comprado
  admin_id INT UNSIGNED DEFAULT NULL,     -- quién lo hizo, si fue un admin
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY idx_usuario (usuario_id),
  KEY idx_tipo (tipo),
  CONSTRAINT transacciones_monedas_ibfk_1 FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE,
  CONSTRAINT transacciones_monedas_ibfk_2 FOREIGN KEY (admin_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
