🎉 Add media-object lifecycle handling.

This commit is contained in:
Andrey Antukh 2020-08-17 13:39:36 +02:00
parent 93aaa52e73
commit c0cd0d4a23
39 changed files with 975 additions and 323 deletions

View file

@ -38,7 +38,6 @@ CREATE INDEX project_profile_rel__project_id__idx
ON project_profile_rel(project_id);
CREATE TABLE file (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id uuid NOT NULL REFERENCES project(id) ON DELETE CASCADE,
@ -77,7 +76,6 @@ CREATE TRIGGER file_profile_rel__modified_at__tgr
BEFORE UPDATE ON file_profile_rel
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();
CREATE TABLE file_image (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
file_id uuid NOT NULL REFERENCES file(id) ON DELETE CASCADE,
@ -168,7 +166,6 @@ BEFORE UPDATE ON page
FOR EACH ROW EXECUTE PROCEDURE handle_page_update();
CREATE TABLE page_version (
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
@ -220,3 +217,4 @@ CREATE INDEX page_change__page_id__idx
CREATE TRIGGER page_change__modified_at__tgr
BEFORE UPDATE ON page_change
FOR EACH ROW EXECUTE PROCEDURE update_modified_at();

View file

@ -0,0 +1,25 @@
ALTER TABLE file
ADD COLUMN has_media_trimmed boolean DEFAULT false;
CREATE INDEX file__modified_at__has_media_trimed__idx
ON file(modified_at)
WHERE has_media_trimmed IS false;
CREATE FUNCTION on_media_object_insert()
RETURNS TRIGGER AS $$
BEGIN
UPDATE file
SET has_media_trimmed = false,
modified_at = now()
WHERE id = NEW.file_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER media_object__insert__tgr
AFTER INSERT ON media_object
FOR EACH ROW EXECUTE PROCEDURE on_media_object_insert();
CREATE TRIGGER media_thumbnail__on_delete__tgr
AFTER DELETE ON media_thumbnail
FOR EACH ROW EXECUTE PROCEDURE handle_delete();

View file

@ -0,0 +1,24 @@
DROP TABLE scheduled_task;
CREATE TABLE scheduled_task (
id text PRIMARY KEY,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
modified_at timestamptz NOT NULL DEFAULT clock_timestamp(),
cron_expr text NOT NULL
);
CREATE TABLE scheduled_task_history (
id uuid DEFAULT uuid_generate_v4(),
task_id text NOT NULL REFERENCES scheduled_task(id),
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
is_error boolean NOT NULL DEFAULT false,
reason text NULL DEFAULT NULL,
PRIMARY KEY (id, created_at)
);
CREATE INDEX scheduled_task_history__task_id__idx
ON scheduled_task_history(task_id);

View file

@ -0,0 +1,8 @@
alter table media_object drop column modified_at;
alter index image_pkey rename to media_object_pkey;
alter index image__file_id__idx rename to media_bject__file_id__idx;
alter table media_object rename constraint image_file_id_fkey to media_object_file_id_fkey;
alter trigger image__on_delete__tgr on media_object rename to media_object__on_delete__tgr;
drop trigger image__modified_at__tgr on media_object;

View file

@ -0,0 +1,4 @@
alter table http_session drop constraint http_session_pkey;
alter table http_session add primary key (id, profile_id);
alter table http_session drop column modified_at;
drop index http_session__profile_id__idx;