CREATE TABLE governors (
    id UUID PRIMARY KEY NOT NULL,
    team_id UUID NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
    project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
    window_size INTERVAL NOT NULL DEFAULT '1 hour',
    max_count INT NOT NULL,
    -- incremented when an entry is created; decremented when an entry expires
    rolling_count INT NOT NULL DEFAULT 0
);

CREATE TABLE governor_entries (
    id UUID PRIMARY KEY NOT NULL,
    governor_id UUID NOT NULL REFERENCES governors(id) ON DELETE CASCADE,
    timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX ON governor_entries(timestamp);
