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;