16 lines
922 B
SQL
16 lines
922 B
SQL
CREATE TABLE support_attachments (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
ticket_id uuid REFERENCES tickets(id) ON DELETE CASCADE,
|
|
media_feedback_id uuid REFERENCES media_feedback(id) ON DELETE CASCADE,
|
|
uploader_user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
filename text NOT NULL CHECK (length(filename) BETWEEN 1 AND 255),
|
|
mime_type text NOT NULL CHECK (length(mime_type) BETWEEN 1 AND 128),
|
|
size_bytes bigint NOT NULL CHECK (size_bytes BETWEEN 1 AND 8388608),
|
|
content bytea NOT NULL,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
CHECK ((ticket_id IS NOT NULL)::int + (media_feedback_id IS NOT NULL)::int = 1)
|
|
);
|
|
|
|
CREATE INDEX support_attachments_ticket_idx ON support_attachments(ticket_id,created_at,id) WHERE ticket_id IS NOT NULL;
|
|
CREATE INDEX support_attachments_feedback_idx ON support_attachments(media_feedback_id,created_at,id) WHERE media_feedback_id IS NOT NULL;
|