-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlessonmanager.cpp
More file actions
129 lines (102 loc) · 4.03 KB
/
Copy pathlessonmanager.cpp
File metadata and controls
129 lines (102 loc) · 4.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "LessonManager.h"
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
LessonManager::LessonManager(QObject *parent)
: QObject(parent)
{
connectToDatabase();
}
bool LessonManager::connectToDatabase()
{
if (QSqlDatabase::contains("qt_sql_default_connection")) {
m_db = QSqlDatabase::database("qt_sql_default_connection");
qDebug() << "подключились стандартно";
} else {
m_db = QSqlDatabase::addDatabase("QSQLITE");
m_db.setDatabaseName("./Assets/database/UsersDB.db"); // указание относительного пути
qDebug() << "подключились по пути";
}
if (!m_db.open()) {
qWarning() << "Не удалось подключится к базе данных:" << m_db.lastError().text();
return false;
}
return true;
}
int LessonManager::getLessonsCount(const QString& language)
{
QString table = (language == "ru" ? "russian" : "english");
table += "_lessons";
QString sql = QString("SELECT COUNT(id) FROM %1").arg(table);
QSqlQuery query(sql);
if (query.exec() && query.next()) {
return query.value(0).toInt();
}
qWarning() << "Не удалось получить количество уроков:" << query.lastError().text();
return 0;
}
double LessonManager::getUserLessonSpeed(int userId, int lessonId, const QString& language) {
QSqlQuery query;
QString tableName = "UserLessons_" + language.toUpper();
QString sql = QString("SELECT speed FROM %1 WHERE user_id = ? AND lesson_id = ?").arg(tableName);
query.prepare(sql);
query.addBindValue(userId);
query.addBindValue(lessonId);
if (query.exec() && query.next()) {
return query.value(0).toDouble();
}
return -1; // или другой дефолт
}
double LessonManager::getUserLessonAccuracy(int userId, int lessonId, const QString& language) {
QSqlQuery query;
QString tableName = "UserLessons_" + language.toUpper();
QString sql = QString("SELECT accuracy FROM %1 WHERE user_id = ? AND lesson_id = ?").arg(tableName);
query.prepare(sql);
query.addBindValue(userId);
query.addBindValue(lessonId);
if (query.exec() && query.next()) {
return query.value(0).toDouble();
}
return -1; // или другой дефолт
}
QString LessonManager::getLessonText(int lessonId, const QString& language) {
QSqlQuery query;
qDebug() << "language: " << language;
QString tableName;
if (language == "ru") {
tableName = "russian_lessons";
} else if (language == "en") {
tableName = "english_lessons";
} else {
qWarning() << "Неизвестный язык:" << language;
return "Ошибка: неизвестный язык";
}
QString sql = QString("SELECT lesson_text FROM %1 WHERE id = ?").arg(tableName);
query.prepare(sql);
query.addBindValue(lessonId);
if (query.exec() && query.next()) {
return query.value(0).toString();
}
qWarning() << "Не удалось получить текст урока. Ошибка:" << query.lastError().text();
return "Ошибка"; // или можно вернуть "Ошибка" / "---" и т.д.
}
QString LessonManager::getLessonType(const QString &language, int lessonId) {
QSqlQuery query;
QString tableName;
if (language == "ru") {
tableName = "russian_lessons";
} else if (language == "en") {
tableName = "english_lessons";
} else {
qWarning() << "Неизвестный язык:" << language;
return "Ошибка: неизвестный язык";
}
QString sql = QString("SELECT lesson_type FROM %1 WHERE id = ?").arg(tableName);
query.prepare(sql);
query.addBindValue(lessonId);
if (query.exec() && query.next()) {
return query.value(0).toString();
}
qWarning() << "Не удалось получить текст урока. Ошибка:" << query.lastError().text();
return "Ошибка: не найден урок";
}