mirror of
https://github.com/blacktop/ipsw.git
synced 2026-05-08 12:22:26 +00:00
94 lines
2.7 KiB
SQL
94 lines
2.7 KiB
SQL
-- Clear all entitlement data from Supabase tables
|
|
-- This script safely removes all data while preserving table structure
|
|
-- Run this before re-indexing an IPSW from scratch
|
|
|
|
-- Disable triggers and constraints temporarily for faster deletion
|
|
SET session_replication_role = replica;
|
|
|
|
-- Clear data in dependency order (child tables first, then parent tables)
|
|
|
|
-- 1. Clear the main entitlements mapping table first
|
|
TRUNCATE TABLE entitlements CASCADE;
|
|
|
|
-- 2. Clear the IPSW-device relationships
|
|
TRUNCATE TABLE ipsw_devices CASCADE;
|
|
|
|
-- 3. Clear the lookup tables
|
|
TRUNCATE TABLE entitlement_keys CASCADE;
|
|
TRUNCATE TABLE entitlement_values CASCADE;
|
|
TRUNCATE TABLE paths CASCADE;
|
|
|
|
-- 4. Clear devices (will be recreated when indexing)
|
|
TRUNCATE TABLE devices CASCADE;
|
|
|
|
-- 5. Clear IPSWs last (parent table)
|
|
TRUNCATE TABLE ipsws CASCADE;
|
|
|
|
-- Re-enable triggers and constraints
|
|
SET session_replication_role = DEFAULT;
|
|
|
|
-- Refresh the materialized view if it exists
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM pg_matviews WHERE matviewname = 'entitlements_search') THEN
|
|
REFRESH MATERIALIZED VIEW entitlements_search;
|
|
ELSE
|
|
RAISE NOTICE 'Materialized view entitlements_search does not exist - skipping refresh';
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Reset sequences to start from 1 (optional, for clean IDs)
|
|
-- Note: Only reset sequences that exist
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM pg_sequences WHERE sequencename = 'entitlement_keys_id_seq') THEN
|
|
ALTER SEQUENCE entitlement_keys_id_seq RESTART WITH 1;
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM pg_sequences WHERE sequencename = 'entitlement_values_id_seq') THEN
|
|
ALTER SEQUENCE entitlement_values_id_seq RESTART WITH 1;
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM pg_sequences WHERE sequencename = 'paths_id_seq') THEN
|
|
ALTER SEQUENCE paths_id_seq RESTART WITH 1;
|
|
END IF;
|
|
|
|
IF EXISTS (SELECT 1 FROM pg_sequences WHERE sequencename = 'entitlements_id_seq') THEN
|
|
ALTER SEQUENCE entitlements_id_seq RESTART WITH 1;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Note: VACUUM commands removed as they cannot run in transaction blocks
|
|
-- TRUNCATE CASCADE already efficiently reclaims space
|
|
|
|
-- Display confirmation
|
|
SELECT
|
|
'entitlements' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM entitlements
|
|
UNION ALL
|
|
SELECT
|
|
'entitlement_keys' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM entitlement_keys
|
|
UNION ALL
|
|
SELECT
|
|
'entitlement_values' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM entitlement_values
|
|
UNION ALL
|
|
SELECT
|
|
'paths' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM paths
|
|
UNION ALL
|
|
SELECT
|
|
'ipsws' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM ipsws
|
|
UNION ALL
|
|
SELECT
|
|
'devices' as table_name,
|
|
COUNT(*) as row_count
|
|
FROM devices
|
|
ORDER BY table_name; |