-- api schema, which houses all the tables for api endpoints
-- example: api.discord_interactions becomes accessible at localhost:9000/discord_interactions
CREATE schema api;

-- authenticator is the role which can "impersonate" other users.
CREATE ROLE authenticator LOGIN NOINHERIT NOCREATEDB NOCREATEROLE NOSUPERUSER;
-- web_anon is the role assigned to anonymous web requests
CREATE ROLE web_anon NOLOGIN;

-- schema for @futureporn/capture and @futureporn/bot
CREATE TABLE api.discord_interactions (
  id int PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  discord_message_id text NOT NULL,
  capture_job_id text NOT NULL
);


-- roles & permissions for our backend automation user
CREATE ROLE automation NOLOGIN;
GRANT automation TO authenticator;
GRANT usage ON SCHEMA api TO automation;
GRANT all ON api.discord_interactions TO automation;

-- role & permissions for web_anon web user
GRANT usage on schema api TO web_anon;
GRANT SELECT ON api.discord_interactions TO web_anon;
