From 0f37f3f264e76e90525da31718d6678a4fc8fe45 Mon Sep 17 00:00:00 2001
From: h7x4 <h7x4@nani.wtf>
Date: Tue, 18 Mar 2025 21:53:32 +0100
Subject: [PATCH] WIP: revamp projects

---
 dist/pvv_mysql.sql  | 42 ++++++++++++++++++++++++++++++------------
 dist/pvv_sqlite.sql | 45 +++++++++++++++++++++++++++++++++------------
 2 files changed, 63 insertions(+), 24 deletions(-)

diff --git a/dist/pvv_mysql.sql b/dist/pvv_mysql.sql
index f8ab9d0..2e8ebcd 100644
--- a/dist/pvv_mysql.sql
+++ b/dist/pvv_mysql.sql
@@ -8,21 +8,39 @@ CREATE TABLE events (
   `description` TEXT
 );
 
-CREATE TABLE projects (
+CREATE TABLE project_group (
   `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
-  `name` TEXT,
-  `description` TEXT,
-  `active` BOOLEAN
+  `title` TEXT NOT NULL,
+  `description_en` TEXT NOT NULL,
+  `description_no` TEXT NOT NULL,
+  `gitea_link` TEXT NOT NULL,
+  `wiki_link` TEXT
 );
 
-CREATE TABLE projectmembers (
-  `projectid` INTEGER,
-  `name` TEXT,
-  `uname` TEXT,
-  `mail` TEXT,
-  `role` TEXT,
-  `lead` BOOLEAN DEFAULT 0,
-  `owner` BOOLEAN DEFAULT 0
+CREATE TABLE project (
+  `id` INTEGER PRIMARY KEY AUTO_INCREMENT,
+  `group_id` INTEGER NOT NULL REFERENCES project_group (id),
+  `title` TEXT NOT NULL,
+  `description_en` TEXT NOT NULL,
+  `description_no` TEXT NOT NULL,
+  `gitea_link` TEXT NOT NULL,
+  `issue_board_link` TEXT NOT NULL,
+  `wiki_link` TEXT,
+  `languages` TEXT,
+  `technologies` TEXT,
+  `keywords` TEXT,
+  `license` TEXT,
+  `logo_url` TEXT,
+  FOREIGN KEY (group_id) REFERENCES project_group (id)
+);
+
+CREATE TABLE project_maintainer (
+  `uname` TEXT PRIMARY KEY,
+  `name` TEXT NOT NULL,
+  `link` TEXT NOT NULL,
+  `mail` TEXT NOT NULL,
+  FOREIGN KEY (project_id) REFERENCES project (id),
+  FOREIGN KEY (uname) REFERENCES maintainer (uname),
 );
 
 CREATE TABLE users (`uname` TEXT, `groups` INT DEFAULT 0);
diff --git a/dist/pvv_sqlite.sql b/dist/pvv_sqlite.sql
index 9a24889..0faf88a 100644
--- a/dist/pvv_sqlite.sql
+++ b/dist/pvv_sqlite.sql
@@ -8,21 +8,42 @@ CREATE TABLE "events" (
   "description" TEXT
 );
 
-CREATE TABLE "projects" (
+CREATE TABLE "project_group" (
   "id" INTEGER PRIMARY KEY AUTOINCREMENT,
-  "name" TEXT,
-  "description" TEXT,
-  "active" BOOLEAN
+  "title" TEXT NOT NULL,
+  "description_en" TEXT NOT NULL,
+  "description_no" TEXT NOT NULL,
+  "gitea_link" TEXT NOT NULL,
+  "wiki_link" TEXT
 );
 
-CREATE TABLE "projectmembers" (
-  "projectid" INTEGER,
-  "name" TEXT,
-  "uname" TEXT,
-  "mail" TEXT,
-  "role" TEXT,
-  "lead" BOOLEAN DEFAULT 0,
-  "owner" BOOLEAN DEFAULT 0
+CREATE TABLE "project" (
+  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
+  "group_id" INTEGER NOT NULL REFERENCES project_group (id),
+  "title" TEXT NOT NULL,
+  "description_en" TEXT NOT NULL,
+  "description_no" TEXT NOT NULL,
+  "gitea_link" TEXT NOT NULL,
+  "issue_board_link" TEXT NOT NULL,
+  "wiki_link" TEXT,
+  "languages" TEXT,
+  "technologies" TEXT,
+  "keywords" TEXT,
+  "license" TEXT,
+  "logo_url" TEXT
+);
+
+CREATE TABLE "project_maintainer" (
+  "uname" TEXT PRIMARY KEY,
+  "name" TEXT NOT NULL,
+  "link" TEXT NOT NULL,
+  "mail" TEXT NOT NULL
+);
+
+CREATE TABLE "project__project_maintainer" (
+  "project_id" INTEGER REFERENCES project (id),
+  "uname" TEXT REFERENCES maintainer (uname),
+  PRIMARY KEY (project_id, uname)
 );
 
 CREATE TABLE "users" ("uname" TEXT, "groups" INT DEFAULT 0);