30 lines
929 B
SQL
30 lines
929 B
SQL
-- +goose Up
|
|
CREATE TABLE IF NOT EXISTS download_grants (
|
|
id TEXT PRIMARY KEY,
|
|
token_hash TEXT NOT NULL UNIQUE,
|
|
resource_type TEXT NOT NULL CHECK (resource_type IN ('source', 'collection')),
|
|
resource_id TEXT NOT NULL,
|
|
target TEXT NOT NULL DEFAULT '',
|
|
expires_at INTEGER,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_download_grants_token_hash
|
|
ON download_grants(token_hash);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_download_grants_resource
|
|
ON download_grants(resource_type, resource_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS recycle_bin (
|
|
id TEXT PRIMARY KEY,
|
|
resource_type TEXT NOT NULL CHECK (resource_type IN ('source', 'collection', 'template', 'share')),
|
|
resource_id TEXT NOT NULL,
|
|
snapshot_json TEXT NOT NULL,
|
|
deleted_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_recycle_bin_deleted_at
|
|
ON recycle_bin(deleted_at DESC);
|