From a749857c98bb1290e7e99cf98273514864cd6c61 Mon Sep 17 00:00:00 2001
From: Imbus <>
Date: Fri, 1 Mar 2024 07:47:06 +0100
Subject: [PATCH] User_roles table constraints

---
 .../internal/database/migrations/0050_user_roles.sql  | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/backend/internal/database/migrations/0050_user_roles.sql b/backend/internal/database/migrations/0050_user_roles.sql
index 32e03dc..56e597b 100644
--- a/backend/internal/database/migrations/0050_user_roles.sql
+++ b/backend/internal/database/migrations/0050_user_roles.sql
@@ -4,4 +4,13 @@ CREATE TABLE IF NOT EXISTS user_roles (
   role STRING NOT NULL, -- 'admin' or 'member'
   FOREIGN KEY (user_id) REFERENCES users (id)
   FOREIGN KEY (project_id) REFERENCES projects (id)
-);
\ No newline at end of file
+  PRIMARY KEY (user_id, project_id)
+);
+
+-- Make sure that the role is either 'admin' or 'member'
+CREATE TRIGGER IF NOT EXISTS user_role_admin_or_member
+  BEFORE INSERT ON user_roles
+  FOR EACH ROW
+  BEGIN
+    SELECT RAISE(ABORT, 'Invalid role') WHERE NEW.role NOT IN ('admin', 'member');
+  END;
\ No newline at end of file