From b6d84b9e96427c7aad51cbeb8605f742e3133bb5 Mon Sep 17 00:00:00 2001 From: acanas Date: Thu, 25 Mar 2021 23:32:23 +0100 Subject: [PATCH] Version 20.51.44: Mar 25, 2021 Project users database table renamed. --- sql/swad.sql | 169 +++++++++++++++++++++++------------------------ swad_changelog.h | 6 +- swad_database.c | 6 +- swad_project.c | 87 +++++++++++++----------- 4 files changed, 137 insertions(+), 131 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index 0fd315eec..cda6e065d 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -724,77 +724,6 @@ CREATE TABLE IF NOT EXISTS gam_games ( UNIQUE INDEX(GamCod), INDEX(CrsCod)); -- --- Table mch_answers: stores the users' answers to the matches --- -CREATE TABLE IF NOT EXISTS mch_answers ( - MchCod INT NOT NULL, - UsrCod INT NOT NULL, - QstInd INT NOT NULL, - NumOpt TINYINT NOT NULL, - AnsInd TINYINT NOT NULL, - UNIQUE INDEX(MchCod,UsrCod,QstInd)); --- --- Table mch_groups: stores the groups associated to each match in a game --- -CREATE TABLE IF NOT EXISTS mch_groups ( - MchCod INT NOT NULL, - GrpCod INT NOT NULL, - UNIQUE INDEX(MchCod,GrpCod)); --- --- Table mch_matches: stores the matches (games instances) already played --- -CREATE TABLE IF NOT EXISTS mch_matches ( - MchCod INT NOT NULL AUTO_INCREMENT, - GamCod INT NOT NULL, - UsrCod INT NOT NULL, - StartTime DATETIME NOT NULL, - EndTime DATETIME NOT NULL, - Title VARCHAR(2047) NOT NULL, - QstInd INT NOT NULL DEFAULT 0, - QstCod INT NOT NULL DEFAULT -1, - Showing ENUM('start','stem','answers','results','end') NOT NULL DEFAULT 'start', - Countdown INT NOT NULL DEFAULT -1, - NumCols INT NOT NULL DEFAULT 1, - ShowQstResults ENUM('N','Y') NOT NULL DEFAULT 'N', - ShowUsrResults ENUM('N','Y') NOT NULL DEFAULT 'N', - UNIQUE INDEX(MchCod), - INDEX(GamCod)); --- --- Table mch_playing: stores the current matches being played --- -CREATE TABLE IF NOT EXISTS mch_playing ( - MchCod INT NOT NULL, - TS TIMESTAMP, - UNIQUE INDEX(MchCod)); --- --- Table mch_players: stores the current match players --- -CREATE TABLE IF NOT EXISTS mch_players ( - MchCod INT NOT NULL, - UsrCod INT NOT NULL, - TS TIMESTAMP, - UNIQUE INDEX(MchCod,UsrCod)); --- --- Table mch_indexes: stores the order of answers in a match --- -CREATE TABLE IF NOT EXISTS mch_indexes ( - MchCod INT NOT NULL, - QstInd INT NOT NULL, - Indexes TEXT NOT NULL, - UNIQUE INDEX(MchCod,QstInd)); --- --- Table mch_results: stores match results --- -CREATE TABLE IF NOT EXISTS mch_results ( - MchCod INT NOT NULL, - UsrCod INT NOT NULL, - StartTime DATETIME NOT NULL, - EndTime DATETIME NOT NULL, - NumQsts INT NOT NULL DEFAULT 0, - NumQstsNotBlank INT NOT NULL DEFAULT 0, - Score DOUBLE PRECISION NOT NULL DEFAULT 0, - UNIQUE INDEX(MchCod,UsrCod)); --- -- Table gam_questions: stores the questions in the games -- CREATE TABLE IF NOT EXISTS gam_questions ( @@ -804,14 +733,6 @@ CREATE TABLE IF NOT EXISTS gam_questions ( UNIQUE INDEX(GamCod,QstInd), UNIQUE INDEX(GamCod,QstCod)); -- --- Table mch_times: stores the elapsed time in every question in every match played --- -CREATE TABLE IF NOT EXISTS mch_times ( - MchCod INT NOT NULL, - QstInd INT NOT NULL, - ElapsedTime TIME NOT NULL DEFAULT 0, - UNIQUE INDEX(MchCod,QstInd)); --- -- Table hld_holidays: stores the holidays in each institution -- CREATE TABLE IF NOT EXISTS hld_holidays ( @@ -983,14 +904,77 @@ CREATE TABLE IF NOT EXISTS log_search ( SearchStr VARCHAR(2047) NOT NULL, UNIQUE INDEX(LogCod)); -- --- Table ntf_mail_domains: stores e-mail domains to which sending of notifications is allowed +-- Table mch_answers: stores the users' answers to the matches -- -CREATE TABLE IF NOT EXISTS ntf_mail_domains ( - MaiCod INT NOT NULL AUTO_INCREMENT, - Domain VARCHAR(255) NOT NULL, - Info VARCHAR(2047) NOT NULL, - UNIQUE INDEX(MaiCod), - UNIQUE INDEX(Domain)); +CREATE TABLE IF NOT EXISTS mch_answers ( + MchCod INT NOT NULL, + UsrCod INT NOT NULL, + QstInd INT NOT NULL, + NumOpt TINYINT NOT NULL, + AnsInd TINYINT NOT NULL, + UNIQUE INDEX(MchCod,UsrCod,QstInd)); +-- +-- Table mch_indexes: stores the order of answers in a match +-- +CREATE TABLE IF NOT EXISTS mch_indexes ( + MchCod INT NOT NULL, + QstInd INT NOT NULL, + Indexes TEXT NOT NULL, + UNIQUE INDEX(MchCod,QstInd)); +-- +-- Table mch_matches: stores the matches (games instances) already played +-- +CREATE TABLE IF NOT EXISTS mch_matches ( + MchCod INT NOT NULL AUTO_INCREMENT, + GamCod INT NOT NULL, + UsrCod INT NOT NULL, + StartTime DATETIME NOT NULL, + EndTime DATETIME NOT NULL, + Title VARCHAR(2047) NOT NULL, + QstInd INT NOT NULL DEFAULT 0, + QstCod INT NOT NULL DEFAULT -1, + Showing ENUM('start','stem','answers','results','end') NOT NULL DEFAULT 'start', + Countdown INT NOT NULL DEFAULT -1, + NumCols INT NOT NULL DEFAULT 1, + ShowQstResults ENUM('N','Y') NOT NULL DEFAULT 'N', + ShowUsrResults ENUM('N','Y') NOT NULL DEFAULT 'N', + UNIQUE INDEX(MchCod), + INDEX(GamCod)); +-- +-- Table mch_players: stores the current match players +-- +CREATE TABLE IF NOT EXISTS mch_players ( + MchCod INT NOT NULL, + UsrCod INT NOT NULL, + TS TIMESTAMP, + UNIQUE INDEX(MchCod,UsrCod)); +-- +-- Table mch_playing: stores the current matches being played +-- +CREATE TABLE IF NOT EXISTS mch_playing ( + MchCod INT NOT NULL, + TS TIMESTAMP, + UNIQUE INDEX(MchCod)); +-- +-- Table mch_results: stores match results +-- +CREATE TABLE IF NOT EXISTS mch_results ( + MchCod INT NOT NULL, + UsrCod INT NOT NULL, + StartTime DATETIME NOT NULL, + EndTime DATETIME NOT NULL, + NumQsts INT NOT NULL DEFAULT 0, + NumQstsNotBlank INT NOT NULL DEFAULT 0, + Score DOUBLE PRECISION NOT NULL DEFAULT 0, + UNIQUE INDEX(MchCod,UsrCod)); +-- +-- Table mch_times: stores the elapsed time in every question in every match played +-- +CREATE TABLE IF NOT EXISTS mch_times ( + MchCod INT NOT NULL, + QstInd INT NOT NULL, + ElapsedTime TIME NOT NULL DEFAULT 0, + UNIQUE INDEX(MchCod,QstInd)); -- -- Table med_media: stores information about media (images, videos, YouTube) -- @@ -1118,6 +1102,15 @@ CREATE TABLE IF NOT EXISTS not_notices ( INDEX(CreatTime), INDEX(Status)); -- +-- Table ntf_mail_domains: stores e-mail domains to which sending of notifications is allowed +-- +CREATE TABLE IF NOT EXISTS ntf_mail_domains ( + MaiCod INT NOT NULL AUTO_INCREMENT, + Domain VARCHAR(255) NOT NULL, + Info VARCHAR(2047) NOT NULL, + UNIQUE INDEX(MaiCod), + UNIQUE INDEX(Domain)); +-- -- Table ntf_notifications: stores the notifications of events -- CREATE TABLE IF NOT EXISTS ntf_notifications ( @@ -1213,9 +1206,9 @@ CREATE TABLE IF NOT EXISTS prj_projects ( INDEX(CrsCod,ModifTime), INDEX(CrsCod,DptCod)); -- --- Table prj_usr: stores the users inside projects +-- Table prj_users: stores the users inside projects -- -CREATE TABLE IF NOT EXISTS prj_usr ( +CREATE TABLE IF NOT EXISTS prj_users ( PrjCod INT NOT NULL, RoleInProject TINYINT NOT NULL DEFAULT 0, UsrCod INT NOT NULL, diff --git a/swad_changelog.h b/swad_changelog.h index 0e8c5cebb..7b195fd7b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -607,7 +607,11 @@ TODO: FIX BUG, URGENT! En las fechas como par TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams - Version 20.51.43: Mar 24, 2021 Log API database table renamed. (308698 lines) + Version 20.51.44: Mar 25, 2021 Project users database table renamed. (308751 lines) + 1 change necessary in database: +RENAME TABLE prj_usr TO prj_users; + + Version 20.51.43: Mar 24, 2021 Log API database table renamed. (308751 lines) 1 change necessary in database: RENAME TABLE log_ws TO log_api; diff --git a/swad_database.c b/swad_database.c index e82b72876..14027aded 100644 --- a/swad_database.c +++ b/swad_database.c @@ -2526,9 +2526,9 @@ mysql> DESCRIBE prj_projects; "INDEX(CrsCod,ModifTime)," "INDEX(CrsCod,DptCod))"); - /***** Table prj_usr *****/ + /***** Table prj_users *****/ /* -mysql> DESCRIBE prj_usr; +mysql> DESCRIBE prj_users; +---------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+------------+------+-----+---------+-------+ @@ -2538,7 +2538,7 @@ mysql> DESCRIBE prj_usr; +---------------+------------+------+-----+---------+-------+ 3 rows in set (0,00 sec) */ - DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_usr (" + DB_CreateTable ("CREATE TABLE IF NOT EXISTS prj_users (" "PrjCod INT NOT NULL," "RoleInProject TINYINT NOT NULL DEFAULT 0," "UsrCod INT NOT NULL," diff --git a/swad_project.c b/swad_project.c index 162179e86..dce8f07eb 100644 --- a/swad_project.c +++ b/swad_project.c @@ -2255,9 +2255,11 @@ static unsigned Prj_GetNumUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProje /***** Get users in project from database *****/ return (unsigned) DB_QueryCOUNT ("can not get number of users in project", "SELECT COUNT(UsrCod)" - " FROM prj_usr" - " WHERE PrjCod=%ld AND RoleInProject=%u", - PrjCod,(unsigned) RoleInProject); + " FROM prj_users" + " WHERE PrjCod=%ld" + " AND RoleInProject=%u", + PrjCod, + (unsigned) RoleInProject); } /*****************************************************************************/ @@ -2269,15 +2271,18 @@ static unsigned Prj_GetUsrsInPrj (long PrjCod,Prj_RoleInProject_t RoleInProject, { /***** Get users in project from database *****/ return (unsigned) DB_QuerySELECT (mysql_res,"can not get users in project", - "SELECT prj_usr.UsrCod," // row[0] - "usr_data.Surname1 AS S1," // row[1] - "usr_data.Surname2 AS S2," // row[2] - "usr_data.FirstName AS FN" // row[3] - " FROM prj_usr,usr_data" - " WHERE prj_usr.PrjCod=%ld" - " AND prj_usr.RoleInProject=%u" - " AND prj_usr.UsrCod=usr_data.UsrCod" - " ORDER BY S1,S2,FN", + "SELECT prj_users.UsrCod," // row[0] + "usr_data.Surname1 AS S1," // row[1] + "usr_data.Surname2 AS S2," // row[2] + "usr_data.FirstName AS FN" // row[3] + " FROM prj_users," + "usr_data" + " WHERE prj_users.PrjCod=%ld" + " AND prj_users.RoleInProject=%u" + " AND prj_users.UsrCod=usr_data.UsrCod" + " ORDER BY S1," + "S2," + "FN", PrjCod,(unsigned) RoleInProject); } @@ -2313,9 +2318,12 @@ unsigned Prj_GetMyRolesInProject (long PrjCod) Gbl.Cache.MyRolesInProject.PrjCod = PrjCod; Gbl.Cache.MyRolesInProject.RolesInProject = 0; NumRows = (unsigned) DB_QuerySELECT (&mysql_res,"can not get my roles in project", - "SELECT RoleInProject FROM prj_usr" - " WHERE PrjCod=%ld AND UsrCod=%ld", - PrjCod,Gbl.Usrs.Me.UsrDat.UsrCod); + "SELECT RoleInProject" + " FROM prj_users" + " WHERE PrjCod=%ld" + " AND UsrCod=%ld", + PrjCod, + Gbl.Usrs.Me.UsrDat.UsrCod); for (NumRow = 0; NumRow < NumRows; NumRow++) @@ -2510,7 +2518,7 @@ static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject) { /* Add user to project */ DB_QueryREPLACE ("can not add user to project", - "REPLACE INTO prj_usr" + "REPLACE INTO prj_users" " (PrjCod,RoleInProject,UsrCod)" " VALUES" " (%ld,%u,%ld)", @@ -2690,9 +2698,10 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) { /***** Remove user from the table of project-users *****/ DB_QueryDELETE ("can not remove a user from a project", - "DELETE FROM prj_usr" - " WHERE PrjCod=%ld AND RoleInProject=%u" - " AND UsrCod=%ld", + "DELETE FROM prj_users" + " WHERE PrjCod=%ld" + " AND RoleInProject=%u" + " AND UsrCod=%ld", Prj.PrjCod, (unsigned) RoleInProject, Gbl.Usrs.Other.UsrDat.UsrCod); @@ -2931,11 +2940,11 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects) NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", "SELECT prj_projects.PrjCod" " FROM prj_projects," - "prj_usr" + "prj_users" " WHERE prj_projects.CrsCod=%ld" "%s%s%s" - " AND prj_projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod=%ld" + " AND prj_projects.PrjCod=prj_users.PrjCod" + " AND prj_users.UsrCod=%ld" " GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " ORDER BY %s", Gbl.Hierarchy.Crs.CrsCod, @@ -2947,12 +2956,12 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects) NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", "SELECT prj_projects.PrjCod" " FROM prj_projects LEFT JOIN dpt_departments," - "prj_usr" + "prj_users" " ON prj_projects.DptCod=dpt_departments.DptCod" " WHERE prj_projects.CrsCod=%ld" "%s%s%s" - " AND prj_projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod=%ld" + " AND prj_projects.PrjCod=prj_users.PrjCod" + " AND prj_users.UsrCod=%ld" " GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " ORDER BY %s", Gbl.Hierarchy.Crs.CrsCod, @@ -2984,11 +2993,11 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects) NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", "SELECT prj_projects.PrjCod" " FROM prj_projects," - "prj_usr" + "prj_users" " WHERE prj_projects.CrsCod=%ld" "%s%s%s" - " AND prj_projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod IN (%s)" + " AND prj_projects.PrjCod=prj_users.PrjCod" + " AND prj_users.UsrCod IN (%s)" " GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " ORDER BY %s", Gbl.Hierarchy.Crs.CrsCod, @@ -3000,12 +3009,12 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects) NumRows = DB_QuerySELECT (&mysql_res,"can not get projects", "SELECT prj_projects.PrjCod" " FROM prj_projects LEFT JOIN dpt_departments," - "prj_usr" + "prj_users" " ON prj_projects.DptCod=dpt_departments.DptCod" " WHERE prj_projects.CrsCod=%ld" "%s%s%s" - " AND prj_projects.PrjCod=prj_usr.PrjCod" - " AND prj_usr.UsrCod IN (%s)" + " AND prj_projects.PrjCod=prj_users.PrjCod" + " AND prj_users.UsrCod IN (%s)" " GROUP BY prj_projects.PrjCod" // To not repeat projects (DISTINCT can not be used) " ORDER BY %s", Gbl.Hierarchy.Crs.CrsCod, @@ -3382,12 +3391,12 @@ void Prj_RemoveProject (void) { /***** Remove users in project *****/ DB_QueryDELETE ("can not remove project", - "DELETE FROM prj_usr" + "DELETE FROM prj_users" " USING prj_projects," - "prj_usr" + "prj_users" " WHERE projects.PrjCod=%ld" " AND projects.CrsCod=%ld" - " AND projects.PrjCod=prj_usr.PrjCod", + " AND projects.PrjCod=prj_users.PrjCod", Prj.PrjCod, Gbl.Hierarchy.Crs.CrsCod); @@ -4004,7 +4013,7 @@ static void Prj_CreateProject (struct Prj_Project *Prj) /***** Insert creator as first tutor *****/ DB_QueryINSERT ("can not add tutor", - "INSERT INTO prj_usr" + "INSERT INTO prj_users" " (PrjCod,RoleInProject,UsrCod)" " VALUES" " (%ld,%u,%ld)", @@ -4548,11 +4557,11 @@ void Prj_RemoveCrsProjects (long CrsCod) { /***** Remove users in projects of the course *****/ DB_QueryDELETE ("can not remove all the projects of a course", - "DELETE FROM prj_usr" + "DELETE FROM prj_users" " USING prj_projects," - "prj_usr" + "prj_users" " WHERE prj_projects.CrsCod=%ld" - " AND prj_projects.PrjCod=prj_usr.PrjCod", + " AND prj_projects.PrjCod=prj_users.PrjCod", CrsCod); /***** Flush cache *****/ @@ -4580,7 +4589,7 @@ void Prj_RemoveUsrFromProjects (long UsrCod) /***** Remove user from projects *****/ DB_QueryDELETE ("can not remove user from projects", - "DELETE FROM prj_usr" + "DELETE FROM prj_users" " WHERE UsrCod=%ld", UsrCod);