omnivore/packages/db/migrations/0108.do.received_emails.sql

45 lines
1.4 KiB
MySQL
Raw Permalink Normal View History

2023-01-17 04:31:52 +00:00
-- Type: DO
-- Name: received_emails
-- Description: Create a table for received emails
BEGIN;
CREATE TABLE omnivore.received_emails (
id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(),
user_id uuid NOT NULL REFERENCES omnivore.user ON DELETE CASCADE,
"from" text NOT NULL,
"to" text NOT NULL,
2023-01-17 04:47:42 +00:00
subject text NOT NULL DEFAULT '',
2023-01-17 04:31:52 +00:00
"text" text NOT NULL,
2023-01-17 04:47:42 +00:00
html text NOT NULL DEFAULT '',
2023-01-17 09:29:04 +00:00
"type" text NOT NULL,
2023-01-17 04:31:52 +00:00
created_at timestamptz NOT NULL DEFAULT current_timestamp,
updated_at timestamptz NOT NULL DEFAULT current_timestamp
);
CREATE TRIGGER received_emails_modtime BEFORE UPDATE ON omnivore.received_emails
FOR EACH ROW EXECUTE PROCEDURE update_updated_at_column();
2023-01-17 09:04:01 +00:00
GRANT SELECT, INSERT, UPDATE, DELETE ON omnivore.received_emails TO omnivore_user;
-- Create a trigger to keep the most recent 20 emails for each user
CREATE OR REPLACE FUNCTION omnivore.delete_old_received_emails()
RETURNS trigger AS $$
BEGIN
DELETE FROM omnivore.received_emails
WHERE id NOT IN (
SELECT id FROM omnivore.received_emails
WHERE user_id = NEW.user_id
ORDER BY created_at DESC
LIMIT 20
);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER delete_old_received_emails
AFTER INSERT ON omnivore.received_emails
FOR EACH ROW EXECUTE PROCEDURE omnivore.delete_old_received_emails();
2023-01-17 04:31:52 +00:00
COMMIT;