99 lines
3.7 KiB
SQL
99 lines
3.7 KiB
SQL
-- =============================================================================
|
|
-- AURGANIZE V6.2 - SESSIONS TABLE ROLLBACK
|
|
-- =============================================================================
|
|
-- Migration: 000002_add_sessions (DOWN)
|
|
-- Description: Removes sessions table and related objects
|
|
-- Author: Aurganize Team
|
|
-- Date: 2025-12-11
|
|
-- Version: 2.1 (Aligned to Tenant-less Sessions Model)
|
|
-- =============================================================================
|
|
-- This rollback migration removes the sessions table and all associated
|
|
-- database objects (indexes, policies, constraints).
|
|
--
|
|
-- CRITICAL WARNINGS:
|
|
-- 1. This PERMANENTLY DELETES all user sessions
|
|
-- 2. All users will be logged out immediately
|
|
-- 3. Active refresh tokens become invalid
|
|
-- 4. Cannot be undone without database backup
|
|
-- 5. Production impact: Users must re-login
|
|
--
|
|
-- SAFE ROLLBACK ORDER:
|
|
-- 1. Disable RLS
|
|
-- 2. Drop policies
|
|
-- 3. Drop triggers (if any)
|
|
-- 4. Drop constraints (implicit via table drop)
|
|
-- 5. Drop indexes
|
|
-- 6. Drop table
|
|
-- =============================================================================
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 1: DISABLE ROW-LEVEL SECURITY
|
|
-- =============================================================================
|
|
|
|
ALTER TABLE IF EXISTS sessions DISABLE ROW LEVEL SECURITY;
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 2: DROP RLS POLICIES
|
|
-- =============================================================================
|
|
-- Note: Tenant isolation policy removed in Option B. Only user-based policy exists.
|
|
|
|
DROP POLICY IF EXISTS sessions_user_isolation ON sessions;
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 3: DROP TRIGGERS
|
|
-- =============================================================================
|
|
-- The updated model does NOT include updated_at → no update trigger exists.
|
|
-- Still kept for safety in case older deployments had it.
|
|
|
|
DROP TRIGGER IF EXISTS update_sessions_updated_at ON sessions;
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 4: DROP INDEXES
|
|
-- =============================================================================
|
|
-- Explicit drops included even though DROP TABLE will remove all dependent indexes.
|
|
|
|
DROP INDEX IF EXISTS idx_sessions_user_id;
|
|
DROP INDEX IF EXISTS idx_sessions_active;
|
|
DROP INDEX IF EXISTS idx_sessions_expires_at;
|
|
DROP INDEX IF EXISTS idx_sessions_ip_address;
|
|
DROP INDEX IF EXISTS idx_sessions_last_used;
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 5: DROP TABLE
|
|
-- =============================================================================
|
|
-- CASCADE ensures removal of dependencies (FKs, RLS metadata, etc.)
|
|
|
|
DROP TABLE IF EXISTS sessions CASCADE;
|
|
|
|
|
|
-- =============================================================================
|
|
-- SECTION 6: VERIFICATION BLOCK
|
|
-- =============================================================================
|
|
|
|
DO $$
|
|
DECLARE
|
|
table_exists BOOLEAN;
|
|
BEGIN
|
|
SELECT EXISTS (
|
|
SELECT 1 FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name = 'sessions'
|
|
) INTO table_exists;
|
|
|
|
IF table_exists THEN
|
|
RAISE WARNING 'WARNING: sessions table still exists after rollback!';
|
|
ELSE
|
|
RAISE NOTICE 'SUCCESS: sessions table removed completely';
|
|
END IF;
|
|
END $$;
|
|
|
|
|
|
-- =============================================================================
|
|
-- END OF ROLLBACK MIGRATION 000002_add_sessions.down.sql
|
|
-- =============================================================================
|