Files
post3/crates/post3-server/migrations/20260227000001_multipart_uploads.sql
2026-02-27 12:02:59 +01:00

30 lines
1.2 KiB
SQL

CREATE TABLE multipart_uploads (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
bucket_id UUID NOT NULL REFERENCES buckets(id) ON DELETE CASCADE,
key TEXT NOT NULL,
upload_id TEXT NOT NULL,
content_type TEXT NOT NULL DEFAULT 'application/octet-stream',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE UNIQUE INDEX idx_multipart_upload_id ON multipart_uploads (upload_id);
CREATE INDEX idx_multipart_bucket ON multipart_uploads (bucket_id);
CREATE TABLE multipart_upload_metadata (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
upload_id UUID NOT NULL REFERENCES multipart_uploads(id) ON DELETE CASCADE,
meta_key TEXT NOT NULL,
meta_value TEXT NOT NULL
);
CREATE UNIQUE INDEX idx_mp_meta_key ON multipart_upload_metadata (upload_id, meta_key);
CREATE TABLE upload_parts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
upload_id UUID NOT NULL REFERENCES multipart_uploads(id) ON DELETE CASCADE,
part_number INT NOT NULL,
data BYTEA NOT NULL,
size BIGINT NOT NULL,
etag TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE UNIQUE INDEX idx_upload_parts_num ON upload_parts (upload_id, part_number);