-- =====================================================================
-- Elimina las tablas legadas org_buckets y bucket_properties
-- Fecha: 2026-09
--
-- Contexto: al diseñar el soporte multiregión de Cloudian (ver
-- docs/cloudian-multiregion-migration.md, rama
-- docs/cloudian-multiregion-migration) se encontró que el esquema ya tenía
-- algo con la misma forma que las tablas nuevas: org_buckets (org +
-- idregion nullable + groupId/groupName) y bucket_properties (bucket +
-- accessKY/secretKY, FK a org_buckets).
--
-- Verificado en vivo contra el DAO antes de decidir nada:
--   * Las dos tienen 0 filas.
--   * Ningún repo Go (client_bkps, client_dplymnts, services_backups_daas,
--     service_s3_cloudian, k8s_dplymnts_daas, ...) las referencia.
--   * El portal PHP tampoco las usa (confirmado directamente por el dueño
--     del repo, no inferido).
--   * Las dos se agregaron en el mismo commit que expuso TODAS las tablas
--     preexistentes de la base como modelos CRUD (d2a6aab, "implements:
--     crud for all models in db") -- no fueron diseñadas para Cloudian ni
--     para ningún flujo en particular.
--
-- Decisión: no reutilizarlas para el diseño multirregión (evita quedarnos
-- con dos fuentes de verdad para lo mismo) y, al quedar completamente
-- huérfanas, eliminarlas en vez de dejarlas sin uso.
--
-- Esto es limpieza de código muerto, independiente de la migración
-- multirregión: no la bloquea y puede aplicarse antes, después o nunca sin
-- afectar nada de lo que describe ese documento.
--
-- No versionado: no hay DDL de estas tablas en ningún repo (igual que
-- requests_queue, ver 2026-08_service_endpoints.sql) -- por eso el backup
-- de abajo usa `LIKE`/`INSERT ... SELECT`, que no requiere conocer su
-- definición exacta de columnas.
--
-- ANTES DE APLICAR:
--   1. Repetir el chequeo de "0 filas" contra el ambiente donde se vaya a
--      correr esto -- el que motivó esta migración se hizo contra QA en
--      2026-09, puede haber cambiado.
--   2. Confirmar que ningún proceso batch/cron/admin tool fuera de los
--      repos ya revisados las toque. Ni el DAO ni ningún Go/PHP conocido
--      las usa, pero ninguna revisión de código puede garantizar que no
--      exista algo operado a mano fuera de ese alcance.
--   3. Correr esto fuera de horario de mayor tráfico si la base es
--      productiva, aunque el impacto esperado es nulo (0 filas, sin
--      lectores/escritores conocidos).
--
-- DESPUÉS DE APLICAR (fuera de este archivo, en el código del DAO):
--   Sacar OrgBucket.cs y BucketProperties.cs, sus entradas en
--   ModelRegistry._map ("org_buckets", "bucket_properties") y sus DbSet en
--   CloudServicesDbContext. Si esto no se hace, el DAO sigue exponiendo
--   ambos modelos vía el CRUD dinámico -- GetAll/Search fallarían con error
--   de SQL ("table doesn't exist") en vez de simplemente no existir.
--
-- Re-ejecutable: los backups usan IF NOT EXISTS y los DROP usan IF EXISTS.
-- =====================================================================

-- ---------------------------------------------------------------------
-- 1. Backup rápido antes de tirar nada (aunque ambas están vacías)
-- ---------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `bucket_properties_backup_20260903` LIKE `bucket_properties`;
INSERT INTO `bucket_properties_backup_20260903` SELECT * FROM `bucket_properties`;

CREATE TABLE IF NOT EXISTS `org_buckets_backup_20260903` LIKE `org_buckets`;
INSERT INTO `org_buckets_backup_20260903` SELECT * FROM `org_buckets`;

-- Verificación manual sugerida antes de continuar:
-- SELECT COUNT(*) FROM `bucket_properties`;  -- se espera 0
-- SELECT COUNT(*) FROM `org_buckets`;        -- se espera 0

-- ---------------------------------------------------------------------
-- 2. DROP -- bucket_properties primero por su FK hacia org_buckets
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `bucket_properties`;
DROP TABLE IF EXISTS `org_buckets`;

-- =====================================================================
-- ROLLBACK (comentado) -- restaura desde el backup de este mismo archivo.
-- Recrea la tabla con los datos que tenía (aquí, ninguno), no
-- necesariamente con el DDL original exacto (constraints/índices que
-- `LIKE` no copia, como AUTO_INCREMENT en curso o la FK entre ambas).
-- =====================================================================
-- CREATE TABLE `org_buckets` LIKE `org_buckets_backup_20260903`;
-- INSERT INTO `org_buckets` SELECT * FROM `org_buckets_backup_20260903`;
-- CREATE TABLE `bucket_properties` LIKE `bucket_properties_backup_20260903`;
-- INSERT INTO `bucket_properties` SELECT * FROM `bucket_properties_backup_20260903`;

-- ---------------------------------------------------------------------
-- 3. Limpieza de los backups, una vez confirmado que todo quedó bien
-- ---------------------------------------------------------------------
-- DROP TABLE IF EXISTS `bucket_properties_backup_20260903`;
-- DROP TABLE IF EXISTS `org_buckets_backup_20260903`;
