40 lines
1.1 KiB
PL/PgSQL
Executable File
40 lines
1.1 KiB
PL/PgSQL
Executable File
-- Type: DO
|
|
-- Name: service_usage
|
|
-- Description: Create table for tracking service usage and enforce limit
|
|
|
|
BEGIN;
|
|
|
|
ALTER TABLE omnivore.received_emails
|
|
ADD COLUMN reply_to TEXT,
|
|
ADD COLUMN reply TEXT;
|
|
|
|
CREATE TABLE omnivore.subscription_plan (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
max_emails_sent_per_day INT NOT NULL,
|
|
created_at timestamptz NOT NULL default current_timestamp
|
|
);
|
|
|
|
INSERT INTO omnivore.subscription_plan (id, name, description, max_emails_sent_per_day)
|
|
VALUES (1, 'Basic', 'Basic plan', 3);
|
|
|
|
CREATE TABLE omnivore.service_usage (
|
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v1mc(),
|
|
user_id uuid NOT NULL REFERENCES omnivore.user,
|
|
action VARCHAR(255) NOT NULL,
|
|
created_at timestamptz NOT NULL default current_timestamp
|
|
);
|
|
|
|
CREATE INDEX ON omnivore.service_usage (user_id);
|
|
|
|
ALTER TABLE omnivore.service_usage ENABLE ROW LEVEL SECURITY;
|
|
|
|
CREATE POLICY service_usage_policy on omnivore.service_usage
|
|
USING (user_id = omnivore.get_current_user_id())
|
|
WITH CHECK (user_id = omnivore.get_current_user_id());
|
|
|
|
GRANT SELECT, INSERT ON omnivore.service_usage TO omnivore_user;
|
|
|
|
COMMIT;
|