27 lines
1.1 KiB
MySQL
27 lines
1.1 KiB
MySQL
|
|
-- Migration 119: Cloud file versioning and sharing (v0.802 CL1)
|
||
|
|
-- Version history for user_files
|
||
|
|
CREATE TABLE IF NOT EXISTS cloud_file_versions (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
file_id UUID NOT NULL REFERENCES user_files(id) ON DELETE CASCADE,
|
||
|
|
version INTEGER NOT NULL DEFAULT 1,
|
||
|
|
storage_key TEXT NOT NULL,
|
||
|
|
size_bytes BIGINT NOT NULL DEFAULT 0,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_cloud_file_versions_file_id ON cloud_file_versions(file_id);
|
||
|
|
|
||
|
|
-- Share links for temporary access
|
||
|
|
CREATE TABLE IF NOT EXISTS cloud_file_shares (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
file_id UUID NOT NULL REFERENCES user_files(id) ON DELETE CASCADE,
|
||
|
|
token VARCHAR(64) NOT NULL UNIQUE,
|
||
|
|
permissions VARCHAR(20) NOT NULL DEFAULT 'read',
|
||
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_cloud_file_shares_file_id ON cloud_file_shares(file_id);
|
||
|
|
CREATE INDEX idx_cloud_file_shares_token ON cloud_file_shares(token);
|
||
|
|
CREATE INDEX idx_cloud_file_shares_expires_at ON cloud_file_shares(expires_at);
|