aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-02-16 01:27:00 +0800
committerRunxi Yu <me@runxiyu.org>2025-02-16 01:27:00 +0800
commit282db4ed346bb7bfda7f7c8165e42386ec3b74a9 (patch)
treee36a3e13317d57942165d810d860898c1f1fe03a
parentssh_*: Pass pubkey to SSH handlers (diff)
downloadforge-282db4ed346bb7bfda7f7c8165e42386ec3b74a9.tar.gz
forge-282db4ed346bb7bfda7f7c8165e42386ec3b74a9.tar.zst
forge-282db4ed346bb7bfda7f7c8165e42386ec3b74a9.zip
schema.sql: Fix public keys and add basic group ACL
-rw-r--r--schema.sql18
1 files changed, 11 insertions, 7 deletions
diff --git a/schema.sql b/schema.sql
index 2d1ee1a..9dc83c7 100644
--- a/schema.sql
+++ b/schema.sql
@@ -36,7 +36,7 @@ CREATE TABLE mailing_lists (
description TEXT
);
-CREATE TABLE emails (
+CREATE TABLE mailing_list_emails (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
list_id INTEGER NOT NULL REFERENCES mailing_lists(id) ON DELETE CASCADE,
title TEXT NOT NULL,
@@ -51,10 +51,15 @@ CREATE TABLE users (
password TEXT
);
+CREATE TABLE ssh_public_keys (
+ key_string TEXT PRIMARY KEY NOT NULL,
+ user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
+);
+
CREATE TABLE sessions (
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- session_id TEXT NOT NULL,
- PRIMARY KEY (user_id, session_id)
+ session_id TEXT PRIMARY KEY NOT NULL,
+ UNIQUE(user_id, session_id)
);
CREATE TABLE merge_requests (
@@ -68,9 +73,8 @@ CREATE TABLE merge_requests (
mailing_list_id INT UNIQUE REFERENCES mailing_lists(id) ON DELETE CASCADE
);
-CREATE TABLE ssh_public_keys (
- id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
+CREATE TABLE user_group_roles (
+ group_id INTEGER NOT NULL REFERENCES groups(id) ON DELETE CASCADE,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
- content TEXT NOT NULL,
- UNIQUE (user_id, content)
+ PRIMARY KEY(user_id, group_id)
);