PSQL id 06.11.2024

This commit is contained in:
krivoshein
2024-11-06 16:06:32 +03:00
parent 0f1fa71c33
commit f4ca58ce91
89 changed files with 1131 additions and 763 deletions

View File

@@ -81,13 +81,13 @@ QList<Trainee> DataBaseLMS::selectAllTrainees()
QList<Trainee> listTrainees;
QString queryStr = QString("SELECT trainees.trainee_id, trainees.name, trainees.login, trainees.password, trainees.archived, trainees.logged_in, "
"groups_of_trainees.name, "
"educational_classes.name, "
"computers.name, computers.ip_address "
"FROM public.trainees JOIN public.groups_of_trainees ON groups_of_trainees.group_id = trainees.group_trainees "
"LEFT OUTER JOIN public.computers ON computers.computer_id = trainees.computer "
"LEFT OUTER JOIN public.educational_classes ON educational_classes.class_id = computers.class "
"ORDER BY groups_of_trainees.name ASC");
"groups.group_id, groups.name, "
"computers.computer_id, computers.name, computers.ip_address, "
"classrooms.classroom_id, classrooms.name "
"FROM public.trainees JOIN public.groups ON groups.group_id = trainees.group_trainee "
"LEFT OUTER JOIN public.computers ON computers.computer_id = trainees.computer_trainee "
"LEFT OUTER JOIN public.classrooms ON classrooms.classroom_id = computers.classroom_computer "
"ORDER BY groups.name, trainees.name ASC");
QSqlQuery query(*db);
if(!query.exec(queryStr))
@@ -106,11 +106,13 @@ QList<Trainee> DataBaseLMS::selectAllTrainees()
trainee.setPassword(query.value(3).toString());
trainee.setArchived(query.value(4).toBool());
trainee.setLoggedIn(query.value(5).toBool());
trainee.setGroup(query.value(6).toString());
trainee.setLearnClass(query.value(7).toString());
trainee.setComputer(query.value(8).toString());
trainee.setIpAddress(query.value(9).toString());
Group group = Group(query.value(6).toInt(), query.value(7).toString());
trainee.setGroup(group);
Classroom classroom = Classroom(query.value(11).toInt(), query.value(12).toString());
Computer computer = Computer(query.value(8).toInt(), query.value(9).toString(), query.value(10).toString(), classroom);
trainee.setComputer(computer);
trainee.setTasks(selectTasksOfTrainee(trainee.getID()));
@@ -125,8 +127,8 @@ QList<Group> DataBaseLMS::selectAllGroups()
{
QList<Group> listGroups;
QString queryStr = QString("SELECT group_id, name, color "
"FROM public.groups_of_trainees "
QString queryStr = QString("SELECT group_id, name "
"FROM public.groups "
"ORDER BY group_id ASC");
QSqlQuery query(*db);
@@ -141,7 +143,6 @@ QList<Group> DataBaseLMS::selectAllGroups()
Group group;
group.setID(query.value(0).toInt());
group.setName(query.value(1).toString());
group.setColor((Group::ColorGroup)query.value(2).toInt());
listGroups.append(group);
}
@@ -150,10 +151,10 @@ QList<Group> DataBaseLMS::selectAllGroups()
return listGroups;
}
bool DataBaseLMS::insertInstructor(Instructor instructor)
int DataBaseLMS::insertInstructor(Instructor instructor)
{
QString queryStr = QString("INSERT INTO public.instructors (name, login, password, is_admin, archived, logged_in) "
"VALUES ('%1', '%2', '%3', %4, %5, %6)").arg(
"VALUES ('%1', '%2', '%3', %4, %5, %6) RETURNING instructor_id").arg(
instructor.getName(),
instructor.getLogin(),
instructor.getPassword(),
@@ -164,18 +165,18 @@ bool DataBaseLMS::insertInstructor(Instructor instructor)
return queryExec(queryStr);
}
bool DataBaseLMS::deleteInstructor(int instructor_id)
int DataBaseLMS::deleteInstructor(int instructor_id)
{
QString queryStr = QString("DELETE FROM public.instructors WHERE instructor_id = %1").arg(QString::number(instructor_id));
QString queryStr = QString("DELETE FROM public.instructors WHERE instructor_id = %1 RETURNING instructors.instructor_id").arg(QString::number(instructor_id));
return queryExec(queryStr);
}
bool DataBaseLMS::updateInstructor(Instructor instructor)
int DataBaseLMS::updateInstructor(Instructor instructor)
{
QString queryStr = QString("UPDATE public.instructors "
"SET name = '%1', login = '%2', password = '%3', is_admin = %4, archived = %5, logged_in = %6 "
"WHERE instructor_id = %7").arg(
"WHERE instructor_id = %7 RETURNING instructors.instructor_id").arg(
instructor.getName(),
instructor.getLogin(),
instructor.getPassword(),
@@ -187,87 +188,81 @@ bool DataBaseLMS::updateInstructor(Instructor instructor)
return queryExec(queryStr);
}
bool DataBaseLMS::insertGroup(Group group)
int DataBaseLMS::insertGroup(Group group)
{
QString queryStr = QString("INSERT INTO public.groups_of_trainees (name, color) "
"VALUES ('%1', %2)").arg(
group.getName(),
QString::number((int)group.getColor()));
QString queryStr = QString("INSERT INTO public.groups (name) "
"VALUES ('%1') RETURNING groups.group_id").arg(
group.getName());
return queryExec(queryStr);
}
bool DataBaseLMS::deleteGroup(int group_id)
int DataBaseLMS::deleteGroup(int group_id)
{
QString queryStr = QString("DELETE FROM public.groups_of_trainees WHERE group_id = %1").arg(QString::number(group_id));
QString queryStr = QString("DELETE FROM public.groups WHERE group_id = %1 RETURNING groups.group_id").arg(QString::number(group_id));
return queryExec(queryStr);
}
bool DataBaseLMS::updateGroup(Group group)
int DataBaseLMS::updateGroup(Group group)
{
QString queryStr = QString("UPDATE public.groups_of_trainees SET name = '%1', color = %2 WHERE group_id = %3").arg(
QString queryStr = QString("UPDATE public.groups SET name = '%1' WHERE group_id = %2 RETURNING groups.group_id").arg(
group.getName(),
QString::number((int)group.getColor()),
QString::number(group.getID()) );
return queryExec(queryStr);
}
bool DataBaseLMS::insertTrainee(Trainee trainee)
int DataBaseLMS::insertTrainee(Trainee trainee)
{
QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, logged_in, group_trainees, computer) "
"VALUES ('%1', '%2', '%3', %4, %5, "
"(SELECT group_id FROM public.groups_of_trainees WHERE name = '%6'), "
"(SELECT computer_id FROM public.computers WHERE name = '%7') "
")").arg(
QString queryStr = QString("INSERT INTO public.trainees (name, login, password, archived, logged_in, group_trainee) "
"VALUES ('%1', '%2', '%3', %4, %5, %6) RETURNING trainees.trainee_id").arg(
trainee.getName(),
trainee.getLogin(),
trainee.getPassword(),
trainee.getArchived() ? "true" : "false",
trainee.getLoggedIn() ? "true" : "false",
trainee.getGroup(),
trainee.getComputer());
QString::number(trainee.getGroup().getID()));
return queryExec(queryStr);
}
bool DataBaseLMS::deleteTrainee(int trainee_id)
int DataBaseLMS::deleteTrainee(int trainee_id)
{
QString queryStr = QString("DELETE FROM public.trainees WHERE trainee_id = %1").arg(QString::number(trainee_id));
QString queryStr = QString("DELETE FROM public.trainees WHERE trainee_id = %1 RETURNING trainees.trainee_id").arg(QString::number(trainee_id));
return queryExec(queryStr);
}
bool DataBaseLMS::updateTrainee(Trainee trainee)
int DataBaseLMS::updateTrainee(Trainee trainee)
{
QString computer_id = (trainee.getComputer().getID() == 0 ? QStringLiteral("null") : QString::number(trainee.getComputer().getID()));
QString queryStr = QString("UPDATE public.trainees "
"SET name = '%1', login = '%2', password = '%3', archived = %4, logged_in = %5, "
"group_trainees = "
"(SELECT group_id FROM public.groups_of_trainees WHERE name = '%6'), "
"computer = "
"(SELECT computer_id FROM public.computers WHERE name = '%7') "
"WHERE trainee_id = %8").arg(
"group_trainee = %6, "
"computer_trainee = %7 "
"WHERE trainee_id = %8 RETURNING trainees.trainee_id").arg(
trainee.getName(),
trainee.getLogin(),
trainee.getPassword(),
trainee.getArchived() ? "true" : "false",
trainee.getLoggedIn() ? "true" : "false",
trainee.getGroup(),
trainee.getComputer(),
QString::number(trainee.getGroup().getID()),
computer_id,
QString::number(trainee.getID()) );
return queryExec(queryStr);
}
QStringList DataBaseLMS::selectTasksOfTrainee(int trainee_id)
QList<Task> DataBaseLMS::selectTasksOfTrainee(int trainee_id)
{
QStringList tasks;
QList<Task> tasks;
QString queryStr = QString("SELECT tasks.task_id, tasks.name "
"FROM public.trainees "
"JOIN public.trainee_tasks ON trainee_tasks.trainee_id = trainees.trainee_id "
"JOIN public.tasks ON tasks.task_id = trainee_tasks.task_id "
"JOIN public.trainees_tasks ON trainees_tasks.trainee_id = trainees.trainee_id "
"JOIN public.tasks ON tasks.task_id = trainees_tasks.task_id "
"WHERE trainees.trainee_id = %1 "
"ORDER BY tasks.name ASC").arg(
trainee_id);
@@ -281,23 +276,31 @@ QStringList DataBaseLMS::selectTasksOfTrainee(int trainee_id)
{
while (query.next())
{//Задача
tasks.append(query.value(1).toString());
Task task;
task.setID(query.value(0).toInt());
task.setName(query.value(1).toString());
tasks.append(task);
}
}
return tasks;
}
bool DataBaseLMS::queryExec(QString queryStr)
int DataBaseLMS::queryExec(QString queryStr)
{
QSqlQuery query(*db);
if(!query.exec(queryStr))
{
messageWarningErrorQuery(queryStr);
return false;
return 0;
}
else
return true;
{
if(query.next())
return query.value(0).toInt();
else
return 0;
}
}
void DataBaseLMS::messageWarningErrorQuery(QString queryStr)