-- Project CT: preserve actual vTiger document bytes before the subscription ends. CREATE TABLE IF NOT EXISTS vtiger_archive_files ( id BIGSERIAL PRIMARY KEY, version_id BIGINT NOT NULL REFERENCES vtiger_archive_versions(id) ON DELETE RESTRICT, document_vtiger_id VARCHAR(120) NOT NULL, resource_vtiger_id VARCHAR(120) NOT NULL, filename TEXT NOT NULL, content_type TEXT, size_bytes BIGINT NOT NULL, content_sha256 VARCHAR(64) NOT NULL, content BYTEA NOT NULL, archived_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), UNIQUE(document_vtiger_id, resource_vtiger_id, content_sha256) ); CREATE INDEX IF NOT EXISTS idx_vtiger_archive_files_version ON vtiger_archive_files(version_id); DROP TRIGGER IF EXISTS trg_vtiger_archive_files_immutable ON vtiger_archive_files; CREATE TRIGGER trg_vtiger_archive_files_immutable BEFORE UPDATE OR DELETE ON vtiger_archive_files FOR EACH ROW EXECUTE FUNCTION deny_vtiger_archive_mutation();