- dbo.Rubro: adjacency list, self-FK, soft-delete, temporal retention 10y - Filtered unique index UQ_Rubro_ParentId_Nombre_Activo + covering IX_Rubro_ParentId_Activo - Permission catalogo:rubros:gestionar seeded + assigned to admin role - V016_ROLLBACK.sql: full reversal script - RubrosOptions class (MaxDepth=10) + appsettings.json Rubros section - services.Configure<RubrosOptions> registered in Infrastructure DI - database/README.md updated with V013-V016 entries
83 lines
3.4 KiB
Transact-SQL
83 lines
3.4 KiB
Transact-SQL
-- V016_ROLLBACK.sql
|
|
-- Reversa de V016__create_rubro.sql.
|
|
--
|
|
-- ⚠️ ADVERTENCIA: ejecutar ELIMINA dbo.Rubro, dbo.Rubro_History,
|
|
-- el permiso 'catalogo:rubros:gestionar' y sus asignaciones.
|
|
--
|
|
-- Uso intended: ROLLBACK en entornos NO-productivos.
|
|
-- Prerequisito: no deben existir FKs vivas apuntando a Rubro (p.ej., Producto, Tarifario).
|
|
-- Si CAT-002..006 o PRC-001 ya están aplicados, agregar TarifarioBaseId FK,
|
|
-- este rollback fallará — usar backup.
|
|
|
|
SET QUOTED_IDENTIFIER ON;
|
|
SET ANSI_NULLS ON;
|
|
SET NOCOUNT ON;
|
|
GO
|
|
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
-- 1. Apagar SYSTEM_VERSIONING + remover PERIOD en Rubro
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
|
|
IF EXISTS (SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('dbo.Rubro') AND temporal_type = 2)
|
|
BEGIN
|
|
ALTER TABLE dbo.Rubro SET (SYSTEM_VERSIONING = OFF);
|
|
PRINT 'Rubro: SYSTEM_VERSIONING OFF.';
|
|
END
|
|
GO
|
|
|
|
IF EXISTS (SELECT 1 FROM sys.periods WHERE object_id = OBJECT_ID('dbo.Rubro'))
|
|
BEGIN
|
|
ALTER TABLE dbo.Rubro DROP PERIOD FOR SYSTEM_TIME;
|
|
PRINT 'Rubro: PERIOD FOR SYSTEM_TIME dropped.';
|
|
END
|
|
GO
|
|
|
|
IF COL_LENGTH('dbo.Rubro', 'ValidFrom') IS NOT NULL
|
|
BEGIN
|
|
ALTER TABLE dbo.Rubro DROP CONSTRAINT IF EXISTS DF_Rubro_ValidFrom;
|
|
ALTER TABLE dbo.Rubro DROP CONSTRAINT IF EXISTS DF_Rubro_ValidTo;
|
|
ALTER TABLE dbo.Rubro DROP COLUMN ValidFrom, ValidTo;
|
|
PRINT 'Rubro: ValidFrom/ValidTo dropped.';
|
|
END
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.Rubro_History', N'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE dbo.Rubro_History;
|
|
PRINT 'Rubro_History dropped.';
|
|
END
|
|
GO
|
|
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
-- 2. Drop índices + tabla Rubro
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
|
|
-- Self-FK must be dropped before dropping the table (SQL Server handles it
|
|
-- automatically when the table is dropped, but explicit is safer).
|
|
|
|
IF OBJECT_ID(N'dbo.Rubro', N'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE dbo.Rubro;
|
|
PRINT 'Table dbo.Rubro dropped.';
|
|
END
|
|
GO
|
|
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
-- 3. Remover permiso 'catalogo:rubros:gestionar' + RolPermiso
|
|
-- ═══════════════════════════════════════════════════════════════════════
|
|
|
|
DELETE rp
|
|
FROM dbo.RolPermiso rp
|
|
JOIN dbo.Permiso p ON p.Id = rp.PermisoId
|
|
WHERE p.Codigo = 'catalogo:rubros:gestionar';
|
|
GO
|
|
|
|
DELETE FROM dbo.Permiso
|
|
WHERE Codigo = 'catalogo:rubros:gestionar';
|
|
GO
|
|
|
|
PRINT '';
|
|
PRINT 'V016 rolled back. dbo.Rubro and dbo.Rubro_History removed.';
|
|
PRINT 'catalogo:rubros:gestionar permission and role assignment removed.';
|
|
GO
|