-- VaultDrop 012 down: revert to V1 schema DROP FUNCTION IF EXISTS resolve_effective_role; DROP TABLE IF EXISTS sync_queue CASCADE; DROP TABLE IF EXISTS retention_policies CASCADE; DROP TABLE IF EXISTS rebac_relations CASCADE; DROP TABLE IF EXISTS resource_placements CASCADE; DROP TABLE IF EXISTS resource_variants CASCADE; DROP TABLE IF EXISTS resource_tags CASCADE; DROP TABLE IF EXISTS refresh_tokens CASCADE; DROP TABLE IF EXISTS storage_locations CASCADE; DROP TABLE IF EXISTS resources CASCADE; DROP TABLE IF EXISTS tags CASCADE; DROP TABLE IF EXISTS users CASCADE; -- Restore V1 tables CREATE TABLE users ( id TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE tags ( id TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), parent_tag_id TEXT, tag_name TEXT NOT NULL, tag_type TEXT NOT NULL DEFAULT 'none', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE files ( id TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), name TEXT NOT NULL, mime_type TEXT NOT NULL DEFAULT '', size BIGINT NOT NULL DEFAULT 0, storage_key TEXT NOT NULL DEFAULT '', checksum TEXT NOT NULL DEFAULT '', ocr_text TEXT NOT NULL DEFAULT '', is_folder BOOLEAN NOT NULL DEFAULT false, parent_file_id TEXT, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE file_tags ( id TEXT PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(), tag_id TEXT, file_id TEXT ); CREATE TABLE thumbnails ( id TEXT PRIMARY KEY DEFAULT gen_random_uuid(), file_id TEXT NOT NULL REFERENCES files(id) ON DELETE CASCADE, page_number INTEGER NOT NULL, resolution_label TEXT NOT NULL, width INTEGER NOT NULL, height INTEGER NOT NULL, storage_key TEXT NOT NULL, mime_type TEXT NOT NULL DEFAULT 'image/jpeg', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE refresh_tokens ( id TEXT NOT NULL DEFAULT gen_random_uuid(), user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE, token_hash TEXT NOT NULL, expires_at TIMESTAMP NOT NULL, revoked BOOLEAN NOT NULL DEFAULT FALSE, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP );