Version 20.51.44: Mar 25, 2021 Project users database table renamed.

This commit is contained in:
acanas 2021-03-25 23:32:23 +01:00
parent 1c7e403eee
commit b6d84b9e96
4 changed files with 137 additions and 131 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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,"

View File

@ -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);