Files
omnivore/packages/db/migrations/0180.do.folder_policy.sql
2024-06-13 18:29:21 +08:00

26 lines
1.1 KiB
PL/PgSQL
Executable File

-- Type: DO
-- Name: folder_policy
-- Description: Create a folder_policy table to contain the folder expiration policies for user and folder
BEGIN;
CREATE TYPE folder_action AS ENUM ('DELETE', 'ARCHIVE');
CREATE TABLE omnivore.folder_policy (
id UUID PRIMARY KEY DEFAULT uuid_generate_v1mc(),
user_id UUID NOT NULL REFERENCES omnivore.user(id) ON DELETE CASCADE,
folder TEXT NOT NULL, -- folder name in lowercase
action folder_action NOT NULL, -- delete or archive
after_days INT NOT NULL, -- number of days after which the action should be taken
minimum_items INT NOT NULL DEFAULT 0, -- minimum number of items to keep in the folder
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE (user_id, folder) -- only one policy per folder per user
);
CREATE TRIGGER update_folder_policy_modtime BEFORE UPDATE ON omnivore.folder_policy FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
GRANT SELECT, INSERT, UPDATE, DELETE ON omnivore.folder_policy TO omnivore_user;
COMMIT;