From 229ebc3a088a2a8c41879f5b7cc08cd663ec883f Mon Sep 17 00:00:00 2001
From: Imbus <>
Date: Tue, 27 Feb 2024 07:59:42 +0100
Subject: [PATCH] AddProject database interface with tests

---
 backend/internal/database/db.go      | 8 +++-----
 backend/internal/database/db_test.go | 8 ++++++++
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/backend/internal/database/db.go b/backend/internal/database/db.go
index 335a4ea..e0006d1 100644
--- a/backend/internal/database/db.go
+++ b/backend/internal/database/db.go
@@ -14,6 +14,7 @@ type Db struct {
 }
 
 const userInsert = "INSERT INTO users (username, password) VALUES (?, ?)"
+const projectInsert = "INSERT INTO projects (name, description, user_id) SELECT ?, ?, id FROM users WHERE username = ?"
 
 // DbConnect connects to the database
 func DbConnect() *Db {
@@ -65,11 +66,8 @@ func (d *Db) GetUserId(username string) (int, error) {
 	return id, err
 }
 
+// Creates a new project in the database, associated with a user
 func (d *Db) AddProject(name string, description string, username string) error {
-	userId, err := d.GetUserId(username)
-	if err != nil {
-		return err
-	}
-	_, err = d.Exec("INSERT INTO projects (name, description, user_id) VALUES (?, ?, ?)", name, description, userId)
+	_, err := d.Exec(projectInsert, name, description, username)
 	return err
 }
diff --git a/backend/internal/database/db_test.go b/backend/internal/database/db_test.go
index bad7dac..ab0355a 100644
--- a/backend/internal/database/db_test.go
+++ b/backend/internal/database/db_test.go
@@ -34,6 +34,14 @@ func TestDbGetUserId(t *testing.T) {
 	}
 }
 
+func TestDbAddProject(t *testing.T) {
+	db := DbConnect()
+	err := db.AddProject("test", "description", "test")
+	if err != nil {
+		t.Error("AddProject failed:", err)
+	}
+}
+
 func TestDbRemoveUser(t *testing.T) {
 	db := DbConnect()
 	err := db.RemoveUser("test")