Files
silo-server/migrations/sql/183_marker_edit_audit.sql
T

50 lines
1.8 KiB
SQL
Raw Normal View History

-- +goose Up
-- +goose StatementBegin
ALTER TABLE public.users
ALTER COLUMN permissions SET DEFAULT ARRAY['marker_edit']::text[];
UPDATE public.users
SET permissions = array_append(permissions, 'marker_edit')
WHERE role <> 'admin'
AND NOT ('marker_edit' = ANY (permissions));
CREATE TABLE public.marker_edit_audit (
id bigserial PRIMARY KEY,
media_file_id integer NOT NULL REFERENCES public.media_files(id) ON DELETE CASCADE,
segment_kind text NOT NULL,
action text NOT NULL,
before_marker jsonb,
after_marker jsonb,
user_id integer REFERENCES public.users(id) ON DELETE SET NULL,
impersonator_user_id integer REFERENCES public.users(id) ON DELETE SET NULL,
api_key_id bigint REFERENCES public.api_keys(id) ON DELETE SET NULL,
request_id text,
client_ip inet,
user_agent text,
created_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT marker_edit_audit_segment_kind_check
CHECK (segment_kind = ANY (ARRAY['intro'::text, 'credits'::text, 'recap'::text, 'preview'::text])),
CONSTRAINT marker_edit_audit_action_check
CHECK (action = ANY (ARRAY['set'::text, 'clear'::text]))
);
CREATE INDEX marker_edit_audit_file_created_idx
ON public.marker_edit_audit (media_file_id, created_at DESC, id DESC);
CREATE INDEX marker_edit_audit_user_created_idx
ON public.marker_edit_audit (user_id, created_at DESC, id DESC)
WHERE user_id IS NOT NULL;
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS public.marker_edit_audit;
UPDATE public.users
SET permissions = array_remove(permissions, 'marker_edit')
WHERE role <> 'admin';
ALTER TABLE public.users
ALTER COLUMN permissions SET DEFAULT '{}'::text[];
-- +goose StatementEnd