-- ============================================================
--  QR Studio · Esquema MySQL
--  Compatible con MySQL 5.6+ y MariaDB 10.0+ (usa LONGTEXT, no JSON,
--  para no depender de versiones nuevas de MariaDB en PHP 7.2).
--  Importar con phpMyAdmin o:  mysql -u root < schema.sql
-- ============================================================

CREATE DATABASE IF NOT EXISTS qr_studio
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE qr_studio;

-- Códigos QR creados, con todas sus características (diseño) en `design`.
CREATE TABLE IF NOT EXISTS qr_codes (
  id          VARCHAR(16)  NOT NULL PRIMARY KEY,
  name        VARCHAR(255) NOT NULL DEFAULT '',
  target      TEXT         NOT NULL,                 -- URL de destino (editable)
  design      LONGTEXT     NULL,                     -- snapshot del diseño (JSON serializado)
  created_at  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Métricas: un registro por escaneo.
CREATE TABLE IF NOT EXISTS scans (
  id          BIGINT       NOT NULL AUTO_INCREMENT PRIMARY KEY,
  code_id     VARCHAR(16)  NOT NULL,
  scanned_at  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  os          VARCHAR(32)  NOT NULL DEFAULT 'Otro',        -- sistema operativo (User-Agent)
  country     VARCHAR(128) NOT NULL DEFAULT 'Desconocido', -- geolocalización por IP
  city        VARCHAR(128) NOT NULL DEFAULT 'Desconocido',
  visitor     VARCHAR(64)  NOT NULL DEFAULT '',            -- hash IP+UA (para únicos)
  INDEX idx_code (code_id),
  INDEX idx_code_time (code_id, scanned_at),
  CONSTRAINT fk_scan_code FOREIGN KEY (code_id)
    REFERENCES qr_codes(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
