From a4a48ef2b6ca80b598ec1a1c5a2c6e6dda0ba479 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 18 Mar 2025 21:53:32 +0100 Subject: [PATCH] revamp projects: modify database schema --- dist/sql/pvv_mysql.sql | 39 +++++++++++++++++++++++++++----------- dist/sql/pvv_sqlite.sql | 42 ++++++++++++++++++++++++++++++----------- 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/dist/sql/pvv_mysql.sql b/dist/sql/pvv_mysql.sql index 49bcfc8..8f376c3 100644 --- a/dist/sql/pvv_mysql.sql +++ b/dist/sql/pvv_mysql.sql @@ -8,22 +8,39 @@ CREATE TABLE events ( `description` TEXT ); -CREATE TABLE projects ( +CREATE TABLE project_group ( `id` INTEGER PRIMARY KEY AUTO_INCREMENT, - `name` TEXT NOT NULL, - `description` TEXT, - `active` BOOLEAN DEFAULT TRUE + `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 ( +CREATE TABLE project ( `id` INTEGER PRIMARY KEY AUTO_INCREMENT, - `projectid` INTEGER FOREIGN KEY REFERENCES projects(`id`), + `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, - `uname` TEXT NOT NULL REFERENCES users(`uname`), - `mail` TEXT, - `role` TEXT, - `lead` BOOLEAN NOT NULL DEFAULT FALSE, - `owner` BOOLEAN NOT NULL DEFAULT FALSE + `link` TEXT NOT NULL, + `mail` TEXT NOT NULL, + FOREIGN KEY (project_id) REFERENCES project (id), + FOREIGN KEY (uname) REFERENCES maintainer (uname), ); CREATE TABLE users ( diff --git a/dist/sql/pvv_sqlite.sql b/dist/sql/pvv_sqlite.sql index 06156a1..b348662 100644 --- a/dist/sql/pvv_sqlite.sql +++ b/dist/sql/pvv_sqlite.sql @@ -8,22 +8,42 @@ CREATE TABLE "events" ( "description" TEXT ); -CREATE TABLE "projects" ( +CREATE TABLE "project_group" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, - "name" TEXT NOT NULL, - "description" TEXT, - "active" BOOLEAN DEFAULT TRUE + "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" ( +CREATE TABLE "project" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, - "projectid" INTEGER REFERENCES projects(id), + "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, - "uname" TEXT NOT NULL REFERENCES users(uname), - "mail" TEXT, - "role" TEXT, - "lead" BOOLEAN NOT NULL DEFAULT FALSE, - "owner" BOOLEAN NOT NULL DEFAULT FALSE + "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" (