Skip to main content

max / makenotwork

726 B · 16 lines History Blame Raw
1 -- Media library: user-scoped files for embedding in markdown content.
2 CREATE TABLE media_files (
3 id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
4 user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
5 folder VARCHAR(100) NOT NULL DEFAULT '',
6 filename VARCHAR(255) NOT NULL,
7 s3_key VARCHAR(500) NOT NULL UNIQUE,
8 content_type VARCHAR(100) NOT NULL,
9 file_size_bytes BIGINT NOT NULL DEFAULT 0,
10 media_type VARCHAR(10) NOT NULL CHECK (media_type IN ('image', 'video')),
11 created_at TIMESTAMPTZ NOT NULL DEFAULT now()
12 );
13
14 CREATE INDEX idx_media_files_user_folder ON media_files(user_id, folder);
15 CREATE UNIQUE INDEX idx_media_files_user_folder_name ON media_files(user_id, folder, filename);
16