Разработка программного модуля информационной системы «Игра «Собачья академия» #3
26 changed files with 1054 additions and 113 deletions
Binary file not shown.
|
|
@ -24,5 +24,6 @@ DATABASE_URL = "sqlite:///database/DogAcademy.db" # Обновлено на п
|
||||||
# Иконки
|
# Иконки
|
||||||
SETTINGS_IMG = "assets/settings.png"
|
SETTINGS_IMG = "assets/settings.png"
|
||||||
|
|
||||||
# Уровни уведомлений (для дальнейшей настройки)
|
# Утилиты
|
||||||
NOTIFICATION_LEVEL = "info" # Возможные значения: "info", "warning", "error"
|
NOTIFICATION_LEVEL = "info" # Возможные значения: "info", "warning", "error"
|
||||||
|
USE_DATABASE_LOGS = True
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -26,20 +26,3 @@ def check_user(login, password):
|
||||||
return False
|
return False
|
||||||
finally:
|
finally:
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
def log_db_event(event_message, root):
|
|
||||||
# Логирование события с базы данных
|
|
||||||
try:
|
|
||||||
# Пример добавления события в лог
|
|
||||||
with open('logs/database_logs.txt', 'a') as log_file:
|
|
||||||
log_file.write(event_message + "\n")
|
|
||||||
|
|
||||||
# Уведомление для администратора
|
|
||||||
notification = Notifications(root)
|
|
||||||
notification.show_info("Событие", f"Событие успешно записано: {event_message}")
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
# Если ошибка при записи в лог
|
|
||||||
notification = Notifications(root)
|
|
||||||
notification.show_error("Ошибка", f"Ошибка при записи в лог: {str(e)}")
|
|
||||||
|
|
@ -9,16 +9,42 @@ engine = create_engine(DATABASE_URL, echo=True)
|
||||||
|
|
||||||
# Создание фабрики сессий
|
# Создание фабрики сессий
|
||||||
Session = sessionmaker(bind=engine)
|
Session = sessionmaker(bind=engine)
|
||||||
session = Session()
|
|
||||||
|
|
||||||
def init_db():
|
# Переменная для хранения текущей сессии
|
||||||
"""Инициализация базы данных: создание файла и таблиц."""
|
current_session = None
|
||||||
if not os.path.exists("database/DogAcademy.db"):
|
|
||||||
print("База данных не найдена. Создаём новую...")
|
|
||||||
Base.metadata.create_all(bind=engine)
|
def init_db(refresh=False):
|
||||||
|
"""
|
||||||
|
Инициализация базы данных: создание файла и таблиц.
|
||||||
|
Если `refresh` равно True, удаляет и пересоздаёт таблицы.
|
||||||
|
"""
|
||||||
|
global current_session
|
||||||
|
if not os.path.exists("database/DogAcademy.db") or refresh:
|
||||||
|
if refresh:
|
||||||
|
print("Обновление базы данных: удаление старых таблиц...")
|
||||||
|
Base.metadata.drop_all(bind=engine) # Удаляем все таблицы
|
||||||
|
|
||||||
|
print("Создание базы данных и таблиц...")
|
||||||
|
Base.metadata.create_all(bind=engine) # Создаём таблицы заново
|
||||||
else:
|
else:
|
||||||
print("База данных уже существует.")
|
print("База данных уже существует. Обновление не требуется.")
|
||||||
|
|
||||||
|
# Инициализация сессии при запуске
|
||||||
|
current_session = get_session()
|
||||||
|
|
||||||
|
|
||||||
def get_session():
|
def get_session():
|
||||||
"""Возвращает сессию для работы с базой данных."""
|
"""Возвращает сессию для работы с базой данных."""
|
||||||
return Session()
|
return Session()
|
||||||
|
|
||||||
|
|
||||||
|
def close_sessions():
|
||||||
|
"""Закрытие всех сессий перед выходом из программы."""
|
||||||
|
global current_session
|
||||||
|
if current_session is not None:
|
||||||
|
print("Закрытие сессии...")
|
||||||
|
current_session.close() # Закрываем текущую сессию базы данных
|
||||||
|
current_session = None
|
||||||
|
else:
|
||||||
|
print("Нет активной сессии для закрытия.")
|
||||||
|
|
|
||||||
|
|
@ -82,4 +82,3 @@ class Notifications(Base):
|
||||||
|
|
||||||
# Связь с таблицей Users
|
# Связь с таблицей Users
|
||||||
user = relationship("Users", back_populates="notifications")
|
user = relationship("Users", back_populates="notifications")
|
||||||
|
|
||||||
|
|
|
||||||
923
logs/logfile.log
923
logs/logfile.log
|
|
@ -327,3 +327,926 @@ CREATE TABLE notifications (
|
||||||
|
|
||||||
2024-11-20 17:07:30 - [no key 0.00018s] ()
|
2024-11-20 17:07:30 - [no key 0.00018s] ()
|
||||||
2024-11-20 17:07:30 - COMMIT
|
2024-11-20 17:07:30 - COMMIT
|
||||||
|
2024-11-21 20:18:15 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("auth")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("auth")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("users")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("users")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("dogs")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("dogs")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("questions")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("questions")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("game_sessions")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("game_sessions")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA main.table_info("notifications")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 - PRAGMA temp.table_info("notifications")
|
||||||
|
2024-11-21 20:18:15 - [raw sql] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE auth (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
login VARCHAR NOT NULL,
|
||||||
|
password VARCHAR NOT NULL,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
UNIQUE (login)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00009s] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE dogs (
|
||||||
|
dog_id INTEGER NOT NULL,
|
||||||
|
breed VARCHAR,
|
||||||
|
characteristics TEXT,
|
||||||
|
behavior TEXT,
|
||||||
|
care_info TEXT,
|
||||||
|
admin_comments TEXT,
|
||||||
|
PRIMARY KEY (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00016s] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE users (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
username VARCHAR NOT NULL,
|
||||||
|
level INTEGER,
|
||||||
|
achievement TEXT,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES auth (user_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00017s] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE questions (
|
||||||
|
question_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
question_text TEXT NOT NULL,
|
||||||
|
image_url VARCHAR,
|
||||||
|
helpful_info TEXT,
|
||||||
|
incorrect_attempts INTEGER,
|
||||||
|
PRIMARY KEY (question_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00024s] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE game_sessions (
|
||||||
|
session_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
level INTEGER NOT NULL,
|
||||||
|
score INTEGER,
|
||||||
|
duration INTEGER,
|
||||||
|
start_time DATETIME,
|
||||||
|
end_time DATETIME,
|
||||||
|
PRIMARY KEY (session_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00018s] ()
|
||||||
|
2024-11-21 20:18:15 -
|
||||||
|
CREATE TABLE notifications (
|
||||||
|
notification_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
timestamp DATETIME,
|
||||||
|
is_read INTEGER,
|
||||||
|
PRIMARY KEY (notification_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-21 20:18:15 - [no key 0.00017s] ()
|
||||||
|
2024-11-21 20:18:15 - COMMIT
|
||||||
|
2024-11-21 20:25:17 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:25:17 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-21 20:25:17 - [generated in 0.00022s] ()
|
||||||
|
2024-11-21 20:25:17 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-21 20:25:17 - [generated in 0.00021s] ()
|
||||||
|
2024-11-21 20:25:17 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-21 20:25:17 - [generated in 0.00013s] ()
|
||||||
|
2024-11-21 20:25:17 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:25:17 - [generated in 0.00013s] ()
|
||||||
|
2024-11-21 20:25:17 - ROLLBACK
|
||||||
|
2024-11-21 20:25:17 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:25:17 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:25:17 - [generated in 0.00014s] ()
|
||||||
|
2024-11-21 20:25:17 - ROLLBACK
|
||||||
|
2024-11-21 20:28:31 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:28:31 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-21 20:28:31 - [generated in 0.00024s] ()
|
||||||
|
2024-11-21 20:28:31 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-21 20:28:31 - [generated in 0.00014s] ()
|
||||||
|
2024-11-21 20:28:31 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-21 20:28:31 - [generated in 0.00017s] ()
|
||||||
|
2024-11-21 20:28:31 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:28:31 - [generated in 0.00018s] ()
|
||||||
|
2024-11-21 20:28:31 - ROLLBACK
|
||||||
|
2024-11-21 20:28:31 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:28:31 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:28:31 - [generated in 0.00015s] ()
|
||||||
|
2024-11-21 20:28:31 - ROLLBACK
|
||||||
|
2024-11-21 20:28:42 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:28:42 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-21 20:28:42 - [cached since 11.61s ago] ()
|
||||||
|
2024-11-21 20:28:42 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-21 20:28:42 - [cached since 11.61s ago] ()
|
||||||
|
2024-11-21 20:28:42 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-21 20:28:42 - [cached since 11.61s ago] ()
|
||||||
|
2024-11-21 20:28:42 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:28:42 - [cached since 11.6s ago] ()
|
||||||
|
2024-11-21 20:28:42 - ROLLBACK
|
||||||
|
2024-11-21 20:28:42 - BEGIN (implicit)
|
||||||
|
2024-11-21 20:28:42 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-21 20:28:42 - [cached since 11.6s ago] ()
|
||||||
|
2024-11-21 20:28:42 - ROLLBACK
|
||||||
|
2024-11-23 04:13:13 - BEGIN (implicit)
|
||||||
|
2024-11-23 04:13:13 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-23 04:13:13 - [generated in 0.00025s] ()
|
||||||
|
2024-11-23 04:13:13 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-23 04:13:13 - [generated in 0.00021s] ()
|
||||||
|
2024-11-23 04:13:13 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-23 04:13:13 - [generated in 0.00012s] ()
|
||||||
|
2024-11-23 04:13:13 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-23 04:13:13 - [generated in 0.00013s] ()
|
||||||
|
2024-11-23 04:13:13 - ROLLBACK
|
||||||
|
2024-11-23 04:13:14 - BEGIN (implicit)
|
||||||
|
2024-11-23 04:13:14 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-23 04:13:14 - [generated in 0.00015s] ()
|
||||||
|
2024-11-23 04:13:14 - ROLLBACK
|
||||||
|
2024-11-25 12:53:49 - BEGIN (implicit)
|
||||||
|
2024-11-25 12:53:49 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 12:53:49 - [generated in 0.00024s] ()
|
||||||
|
2024-11-25 12:53:49 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 12:53:49 - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 12:53:49 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 12:53:49 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 12:53:49 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 12:53:49 - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 12:53:49 - ROLLBACK
|
||||||
|
2024-11-25 12:53:49 - BEGIN (implicit)
|
||||||
|
2024-11-25 12:53:49 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 12:53:49 - [generated in 0.00015s] ()
|
||||||
|
2024-11-25 12:53:49 - ROLLBACK
|
||||||
|
2024-11-25 12:53:54 - BEGIN (implicit)
|
||||||
|
2024-11-25 12:53:54 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 12:53:54 - [cached since 4.772s ago] ()
|
||||||
|
2024-11-25 12:53:54 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 12:53:54 - [cached since 4.767s ago] ()
|
||||||
|
2024-11-25 12:53:54 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 12:53:54 - [cached since 4.766s ago] ()
|
||||||
|
2024-11-25 12:53:54 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 12:53:54 - [cached since 4.765s ago] ()
|
||||||
|
2024-11-25 12:53:54 - ROLLBACK
|
||||||
|
2024-11-25 12:53:54 - BEGIN (implicit)
|
||||||
|
2024-11-25 12:53:54 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 12:53:54 - [cached since 4.687s ago] ()
|
||||||
|
2024-11-25 12:53:54 - ROLLBACK
|
||||||
|
2024-11-25 13:05:16 - BEGIN (implicit)
|
||||||
|
2024-11-25 13:05:16 - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:05:16 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 13:05:16 - ROLLBACK
|
||||||
|
2024-11-25 13:08:00 - BEGIN (implicit)
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("auth")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("auth")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("users")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("users")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("dogs")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("dogs")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("questions")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("questions")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("game_sessions")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("game_sessions")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("notifications")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("notifications")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA main.table_info("logs")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 - PRAGMA temp.table_info("logs")
|
||||||
|
2024-11-25 13:08:00 - [raw sql] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE auth (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
login VARCHAR NOT NULL,
|
||||||
|
password VARCHAR NOT NULL,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
UNIQUE (login)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00011s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE dogs (
|
||||||
|
dog_id INTEGER NOT NULL,
|
||||||
|
breed VARCHAR,
|
||||||
|
characteristics TEXT,
|
||||||
|
behavior TEXT,
|
||||||
|
care_info TEXT,
|
||||||
|
admin_comments TEXT,
|
||||||
|
PRIMARY KEY (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE logs (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
date DATETIME,
|
||||||
|
log_type VARCHAR NOT NULL,
|
||||||
|
message VARCHAR NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00018s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE users (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
username VARCHAR NOT NULL,
|
||||||
|
level INTEGER,
|
||||||
|
achievement TEXT,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES auth (user_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE questions (
|
||||||
|
question_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
question_text TEXT NOT NULL,
|
||||||
|
image_url VARCHAR,
|
||||||
|
helpful_info TEXT,
|
||||||
|
incorrect_attempts INTEGER,
|
||||||
|
PRIMARY KEY (question_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00018s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE game_sessions (
|
||||||
|
session_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
level INTEGER NOT NULL,
|
||||||
|
score INTEGER,
|
||||||
|
duration INTEGER,
|
||||||
|
start_time DATETIME,
|
||||||
|
end_time DATETIME,
|
||||||
|
PRIMARY KEY (session_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00019s] ()
|
||||||
|
2024-11-25 13:08:00 -
|
||||||
|
CREATE TABLE notifications (
|
||||||
|
notification_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
timestamp DATETIME,
|
||||||
|
is_read INTEGER,
|
||||||
|
PRIMARY KEY (notification_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:08:00 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 13:08:00 - COMMIT
|
||||||
|
2024-11-25 13:08:31 - BEGIN (implicit)
|
||||||
|
2024-11-25 13:08:31 - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:08:31 - [generated in 0.00017s] ()
|
||||||
|
2024-11-25 13:08:31 - ROLLBACK
|
||||||
|
2024-11-25 13:23:57 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("auth")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("auth")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("users")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("users")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("dogs")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("dogs")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("questions")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("questions")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("game_sessions")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("game_sessions")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("notifications")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("notifications")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA main.table_info("logs")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - PRAGMA temp.table_info("logs")
|
||||||
|
2024-11-25 13:23:57 - INFO - [raw sql] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE auth (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
login VARCHAR NOT NULL,
|
||||||
|
password VARCHAR NOT NULL,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
UNIQUE (login)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00010s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE dogs (
|
||||||
|
dog_id INTEGER NOT NULL,
|
||||||
|
breed VARCHAR,
|
||||||
|
characteristics TEXT,
|
||||||
|
behavior TEXT,
|
||||||
|
care_info TEXT,
|
||||||
|
admin_comments TEXT,
|
||||||
|
PRIMARY KEY (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00017s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE logs (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
date DATETIME,
|
||||||
|
log_type VARCHAR NOT NULL,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00016s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE users (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
username VARCHAR NOT NULL,
|
||||||
|
level INTEGER,
|
||||||
|
achievement TEXT,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES auth (user_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00019s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE questions (
|
||||||
|
question_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
question_text TEXT NOT NULL,
|
||||||
|
image_url VARCHAR,
|
||||||
|
helpful_info TEXT,
|
||||||
|
incorrect_attempts INTEGER,
|
||||||
|
PRIMARY KEY (question_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00019s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE game_sessions (
|
||||||
|
session_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
level INTEGER NOT NULL,
|
||||||
|
score INTEGER,
|
||||||
|
duration INTEGER,
|
||||||
|
start_time DATETIME,
|
||||||
|
end_time DATETIME,
|
||||||
|
PRIMARY KEY (session_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00026s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO -
|
||||||
|
CREATE TABLE notifications (
|
||||||
|
notification_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
timestamp DATETIME,
|
||||||
|
is_read INTEGER,
|
||||||
|
PRIMARY KEY (notification_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 13:23:57 - INFO - [no key 0.00022s] ()
|
||||||
|
2024-11-25 13:23:57 - INFO - COMMIT
|
||||||
|
2024-11-25 13:33:28 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:28 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:33:28 - INFO - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 13:33:28 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:33:31 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:31 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:33:31 - INFO - [cached since 2.607s ago] ()
|
||||||
|
2024-11-25 13:33:31 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:33:31 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:31 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:33:31 - INFO - [generated in 0.00035s] ('SYSTEM',)
|
||||||
|
2024-11-25 13:33:31 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:33:32 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:32 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:33:32 - INFO - [cached since 0.5754s ago] ('INFO',)
|
||||||
|
2024-11-25 13:33:32 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:33:32 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:32 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:33:32 - INFO - [cached since 1.054s ago] ('ERROR',)
|
||||||
|
2024-11-25 13:33:32 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:33:38 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:33:38 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:33:38 - INFO - [cached since 6.751s ago] ('SYSTEM',)
|
||||||
|
2024-11-25 13:33:38 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:08 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:08 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:40:08 - INFO - [generated in 0.00021s] ()
|
||||||
|
2024-11-25 13:40:08 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:25 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:25 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:40:25 - INFO - [generated in 0.00017s] ('SYSTEM',)
|
||||||
|
2024-11-25 13:40:25 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:33 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:33 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:40:33 - INFO - [cached since 7.706s ago] ('INFO',)
|
||||||
|
2024-11-25 13:40:33 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:35 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:35 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 13:40:35 - INFO - [cached since 26.78s ago] ()
|
||||||
|
2024-11-25 13:40:35 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:44 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:44 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:40:44 - INFO - [cached since 19.27s ago] ('SYSTEM',)
|
||||||
|
2024-11-25 13:40:44 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:45 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:45 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:40:45 - INFO - [cached since 20.1s ago] ('INFO',)
|
||||||
|
2024-11-25 13:40:45 - INFO - ROLLBACK
|
||||||
|
2024-11-25 13:40:46 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 13:40:46 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
WHERE logs.log_type = ?
|
||||||
|
2024-11-25 13:40:46 - INFO - [cached since 21.3s ago] ('ERROR',)
|
||||||
|
2024-11-25 13:40:46 - INFO - ROLLBACK
|
||||||
|
2024-11-25 14:40:55 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 14:40:55 - INFO - SELECT notifications.notification_id AS notifications_notification_id, notifications.user_id AS notifications_user_id, notifications.message AS notifications_message, notifications.timestamp AS notifications_timestamp, notifications.is_read AS notifications_is_read
|
||||||
|
FROM notifications ORDER BY notifications.timestamp DESC
|
||||||
|
2024-11-25 14:40:55 - INFO - [generated in 0.00027s] ()
|
||||||
|
2024-11-25 14:40:55 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:16:46 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:16:46 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 16:16:46 - INFO - [generated in 0.00021s] ()
|
||||||
|
2024-11-25 16:16:46 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:16:50 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:16:50 - INFO - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 16:16:50 - INFO - [generated in 0.00024s] ()
|
||||||
|
2024-11-25 16:16:50 - INFO - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 16:16:50 - INFO - [generated in 0.00019s] ()
|
||||||
|
2024-11-25 16:16:50 - INFO - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 16:16:50 - INFO - [generated in 0.00016s] ()
|
||||||
|
2024-11-25 16:16:50 - INFO - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:16:50 - INFO - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 16:16:50 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:16:51 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:16:51 - INFO - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:16:51 - INFO - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:16:51 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:20:02 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:20:02 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 16:20:02 - INFO - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 16:20:02 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:20:03 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:20:03 - INFO - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 16:20:03 - INFO - [generated in 0.00025s] ()
|
||||||
|
2024-11-25 16:20:03 - INFO - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 16:20:03 - INFO - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:20:03 - INFO - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 16:20:03 - INFO - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 16:20:03 - INFO - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:20:03 - INFO - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 16:20:03 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:20:03 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:20:03 - INFO - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:20:03 - INFO - [generated in 0.00015s] ()
|
||||||
|
2024-11-25 16:20:03 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:33:54 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:33:54 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 16:33:54 - INFO - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 16:33:54 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:33:55 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:33:55 - INFO - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 16:33:55 - INFO - [generated in 0.00022s] ()
|
||||||
|
2024-11-25 16:33:55 - INFO - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 16:33:55 - INFO - [generated in 0.00019s] ()
|
||||||
|
2024-11-25 16:33:55 - INFO - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 16:33:55 - INFO - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 16:33:55 - INFO - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:33:55 - INFO - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 16:33:55 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:33:55 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:33:55 - INFO - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:33:55 - INFO - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:33:55 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:37:51 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:37:51 - INFO - SELECT logs.id AS logs_id, logs.date AS logs_date, logs.log_type AS logs_log_type, logs.message AS logs_message
|
||||||
|
FROM logs
|
||||||
|
2024-11-25 16:37:51 - INFO - [generated in 0.00027s] ()
|
||||||
|
2024-11-25 16:37:51 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:37:54 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:37:54 - INFO - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 16:37:54 - INFO - [generated in 0.00021s] ()
|
||||||
|
2024-11-25 16:37:54 - INFO - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 16:37:54 - INFO - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:37:54 - INFO - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 16:37:54 - INFO - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 16:37:54 - INFO - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:37:54 - INFO - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 16:37:54 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:37:54 - INFO - BEGIN (implicit)
|
||||||
|
2024-11-25 16:37:54 - INFO - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:37:54 - INFO - [generated in 0.00017s] ()
|
||||||
|
2024-11-25 16:37:54 - INFO - ROLLBACK
|
||||||
|
2024-11-25 16:54:01 - BEGIN (implicit)
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("auth")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("auth")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("users")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("users")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("dogs")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("dogs")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("questions")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("questions")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("game_sessions")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("game_sessions")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA main.table_info("notifications")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 - PRAGMA temp.table_info("notifications")
|
||||||
|
2024-11-25 16:54:01 - [raw sql] ()
|
||||||
|
2024-11-25 16:54:01 -
|
||||||
|
CREATE TABLE auth (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
login VARCHAR NOT NULL,
|
||||||
|
password VARCHAR NOT NULL,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
UNIQUE (login)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:01 - [no key 0.00010s] ()
|
||||||
|
2024-11-25 16:54:01 -
|
||||||
|
CREATE TABLE dogs (
|
||||||
|
dog_id INTEGER NOT NULL,
|
||||||
|
breed VARCHAR,
|
||||||
|
characteristics TEXT,
|
||||||
|
behavior TEXT,
|
||||||
|
care_info TEXT,
|
||||||
|
admin_comments TEXT,
|
||||||
|
PRIMARY KEY (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:01 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 16:54:01 -
|
||||||
|
CREATE TABLE users (
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
username VARCHAR NOT NULL,
|
||||||
|
level INTEGER,
|
||||||
|
achievement TEXT,
|
||||||
|
PRIMARY KEY (user_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES auth (user_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:01 - [no key 0.00018s] ()
|
||||||
|
2024-11-25 16:54:01 -
|
||||||
|
CREATE TABLE questions (
|
||||||
|
question_id INTEGER NOT NULL,
|
||||||
|
dog_id INTEGER,
|
||||||
|
question_text TEXT NOT NULL,
|
||||||
|
image_url VARCHAR,
|
||||||
|
helpful_info TEXT,
|
||||||
|
incorrect_attempts INTEGER,
|
||||||
|
PRIMARY KEY (question_id),
|
||||||
|
FOREIGN KEY(dog_id) REFERENCES dogs (dog_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:01 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 16:54:02 -
|
||||||
|
CREATE TABLE game_sessions (
|
||||||
|
session_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
level INTEGER NOT NULL,
|
||||||
|
score INTEGER,
|
||||||
|
duration INTEGER,
|
||||||
|
start_time DATETIME,
|
||||||
|
end_time DATETIME,
|
||||||
|
PRIMARY KEY (session_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:02 - [no key 0.00018s] ()
|
||||||
|
2024-11-25 16:54:02 -
|
||||||
|
CREATE TABLE notifications (
|
||||||
|
notification_id INTEGER NOT NULL,
|
||||||
|
user_id INTEGER,
|
||||||
|
message TEXT NOT NULL,
|
||||||
|
timestamp DATETIME,
|
||||||
|
is_read INTEGER,
|
||||||
|
PRIMARY KEY (notification_id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES users (user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
2024-11-25 16:54:02 - [no key 0.00017s] ()
|
||||||
|
2024-11-25 16:54:02 - COMMIT
|
||||||
|
2024-11-25 16:57:03 - BEGIN (implicit)
|
||||||
|
2024-11-25 16:57:03 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 16:57:03 - [generated in 0.00029s] ()
|
||||||
|
2024-11-25 16:57:03 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 16:57:03 - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:57:03 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 16:57:03 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 16:57:03 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:57:03 - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 16:57:03 - ROLLBACK
|
||||||
|
2024-11-25 16:57:03 - BEGIN (implicit)
|
||||||
|
2024-11-25 16:57:03 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 16:57:03 - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 16:57:03 - ROLLBACK
|
||||||
|
2024-11-25 17:04:27 - BEGIN (implicit)
|
||||||
|
2024-11-25 17:04:27 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 17:04:27 - [generated in 0.00024s] ()
|
||||||
|
2024-11-25 17:04:27 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 17:04:27 - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 17:04:27 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 17:04:27 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 17:04:27 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 17:04:27 - [generated in 0.00012s] ()
|
||||||
|
2024-11-25 17:04:27 - ROLLBACK
|
||||||
|
2024-11-25 17:04:27 - BEGIN (implicit)
|
||||||
|
2024-11-25 17:04:27 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 17:04:27 - [generated in 0.00014s] ()
|
||||||
|
2024-11-25 17:04:27 - ROLLBACK
|
||||||
|
2024-11-25 19:09:00 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:09:00 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:09:00 - [generated in 0.00042s] ()
|
||||||
|
2024-11-25 19:09:00 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:09:00 - [generated in 0.00037s] ()
|
||||||
|
2024-11-25 19:09:00 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:09:00 - [generated in 0.00028s] ()
|
||||||
|
2024-11-25 19:09:00 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:09:00 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 19:09:00 - ROLLBACK
|
||||||
|
2024-11-25 19:09:00 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:09:00 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:09:00 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 19:09:00 - ROLLBACK
|
||||||
|
2024-11-25 19:10:40 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:10:40 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:10:40 - [generated in 0.00032s] ()
|
||||||
|
2024-11-25 19:10:40 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:10:40 - [generated in 0.00016s] ()
|
||||||
|
2024-11-25 19:10:40 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:10:40 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 19:10:40 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:10:40 - [generated in 0.00021s] ()
|
||||||
|
2024-11-25 19:10:40 - ROLLBACK
|
||||||
|
2024-11-25 19:10:40 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:10:40 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:10:40 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 19:10:40 - ROLLBACK
|
||||||
|
2024-11-25 19:17:48 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:17:48 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:17:48 - [generated in 0.00031s] ()
|
||||||
|
2024-11-25 19:17:48 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:17:48 - [generated in 0.00021s] ()
|
||||||
|
2024-11-25 19:17:48 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:17:48 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 19:17:48 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:17:48 - [generated in 0.00023s] ()
|
||||||
|
2024-11-25 19:17:48 - ROLLBACK
|
||||||
|
2024-11-25 19:17:48 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:17:48 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:17:48 - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 19:17:48 - ROLLBACK
|
||||||
|
2024-11-25 19:20:49 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:20:49 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:20:49 - [generated in 0.00032s] ()
|
||||||
|
2024-11-25 19:20:49 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:20:49 - [generated in 0.00033s] ()
|
||||||
|
2024-11-25 19:20:49 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:20:49 - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 19:20:49 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:20:49 - [generated in 0.00018s] ()
|
||||||
|
2024-11-25 19:20:49 - ROLLBACK
|
||||||
|
2024-11-25 19:20:50 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:20:50 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:20:50 - [generated in 0.00015s] ()
|
||||||
|
2024-11-25 19:20:50 - ROLLBACK
|
||||||
|
2024-11-25 19:21:14 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:21:14 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:21:14 - [generated in 0.00029s] ()
|
||||||
|
2024-11-25 19:21:14 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:21:14 - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 19:21:14 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:21:14 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 19:21:14 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:21:14 - [generated in 0.00026s] ()
|
||||||
|
2024-11-25 19:21:14 - ROLLBACK
|
||||||
|
2024-11-25 19:21:14 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:21:14 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:21:14 - [generated in 0.00026s] ()
|
||||||
|
2024-11-25 19:21:14 - ROLLBACK
|
||||||
|
2024-11-25 19:32:52 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:32:52 - SELECT count(*) AS count_1
|
||||||
|
FROM (SELECT users.user_id AS users_user_id, users.dog_id AS users_dog_id, users.username AS users_username, users.level AS users_level, users.achievement AS users_achievement
|
||||||
|
FROM users) AS anon_1
|
||||||
|
2024-11-25 19:32:52 - [generated in 0.00030s] ()
|
||||||
|
2024-11-25 19:32:52 - SELECT game_sessions.level AS game_sessions_level, count(game_sessions.session_id) AS count_1
|
||||||
|
FROM game_sessions GROUP BY game_sessions.level
|
||||||
|
2024-11-25 19:32:52 - [generated in 0.00017s] ()
|
||||||
|
2024-11-25 19:32:52 - SELECT questions.question_text AS questions_question_text, questions.incorrect_attempts AS questions_incorrect_attempts
|
||||||
|
FROM questions ORDER BY questions.incorrect_attempts DESC
|
||||||
|
2024-11-25 19:32:52 - [generated in 0.00013s] ()
|
||||||
|
2024-11-25 19:32:52 - SELECT avg(game_sessions.duration) AS avg_1
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:32:52 - [generated in 0.00020s] ()
|
||||||
|
2024-11-25 19:32:52 - ROLLBACK
|
||||||
|
2024-11-25 19:32:52 - BEGIN (implicit)
|
||||||
|
2024-11-25 19:32:52 - SELECT game_sessions.start_time AS game_sessions_start_time
|
||||||
|
FROM game_sessions
|
||||||
|
2024-11-25 19:32:52 - [generated in 0.00016s] ()
|
||||||
|
2024-11-25 19:32:52 - ROLLBACK
|
||||||
|
|
|
||||||
4
logs_export.csv
Normal file
4
logs_export.csv
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Дата,Тип,Сообщение
|
||||||
|
2024-11-21,INFO,Система запущена
|
||||||
|
2024-11-21,ERROR,Ошибка подключения к базе данных
|
||||||
|
2024-11-21,WARNING,Слабый пароль администратора
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/admin_functions/__pycache__/notification.cpython-313.pyc
Normal file
BIN
src/admin_functions/__pycache__/notification.cpython-313.pyc
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -52,4 +52,3 @@ def export_logs():
|
||||||
writer.writerow(["Время", "Действие", "Пользователь"])
|
writer.writerow(["Время", "Действие", "Пользователь"])
|
||||||
writer.writerows(data)
|
writer.writerows(data)
|
||||||
print("Логи успешно экспортированы в logs.csv")
|
print("Логи успешно экспортированы в logs.csv")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ def view_knowledge_base(frame):
|
||||||
|
|
||||||
|
|
||||||
def generate_questions(frame):
|
def generate_questions(frame):
|
||||||
|
print("Я по приколу вызвался")
|
||||||
"""Генерация вопросов на основе текстов."""
|
"""Генерация вопросов на основе текстов."""
|
||||||
clear_frame(frame)
|
clear_frame(frame)
|
||||||
tk.Label(frame, text="Генерация вопросов", font=("Comic Sans MS", 16)).pack()
|
tk.Label(frame, text="Генерация вопросов", font=("Comic Sans MS", 16)).pack()
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,17 @@
|
||||||
from tkinter import messagebox
|
import tkinter as tk
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
class Notification:
|
class Notification:
|
||||||
def __init__(self, root):
|
def __init__(self, parent, message, timestamp):
|
||||||
self.root = root
|
self.frame = tk.Frame(parent, bg="#2f2b38", pady=5)
|
||||||
|
self.frame.pack(fill="x", pady=5)
|
||||||
|
|
||||||
def show_info(self, title, message):
|
self.message_label = tk.Label(self.frame, text=message, bg="#2f2b38", fg="#b2acc0", font=("Comic Sans MS", 12))
|
||||||
"""Отображение информационного уведомления"""
|
self.message_label.pack(side="left", padx=10)
|
||||||
messagebox.showinfo(title, message)
|
|
||||||
|
|
||||||
def show_warning(self, title, message):
|
self.timestamp_label = tk.Label(self.frame, text=self.format_timestamp(timestamp), bg="#2f2b38", fg="#b2acc0", font=("Comic Sans MS", 10))
|
||||||
"""Отображение предупреждения"""
|
self.timestamp_label.pack(side="right", padx=10)
|
||||||
messagebox.showwarning(title, message)
|
|
||||||
|
|
||||||
def show_error(self, title, message):
|
def format_timestamp(self, timestamp):
|
||||||
"""Отображение ошибки"""
|
"""Форматирование метки времени."""
|
||||||
messagebox.showerror(title, message)
|
return datetime.strptime(str(timestamp), "%Y-%m-%d %H:%M:%S").strftime("%d-%m-%Y %H:%M:%S")
|
||||||
|
|
||||||
def show_notification(self, title, message):
|
|
||||||
"""Отображение общего уведомления"""
|
|
||||||
self.show_info(title, message)
|
|
||||||
|
|
|
||||||
22
src/main.py
22
src/main.py
|
|
@ -1,24 +1,26 @@
|
||||||
from tkinter import Tk
|
from tkinter import Tk, messagebox
|
||||||
from tkinter import messagebox
|
from src.ui.auth_ui import DogAcademyApp # Путь к приложению
|
||||||
from src.ui.auth_ui import DogAcademyApp # Изменил на правильный путь
|
from database.db_session import init_db, close_sessions # Функция для закрытия сессий
|
||||||
from database.db_session import init_db
|
|
||||||
|
|
||||||
def on_close():
|
def on_close():
|
||||||
"""Обработчик закрытия окна."""
|
"""Обработчик закрытия окна."""
|
||||||
if messagebox.askokcancel("Выход", "Вы действительно хотите выйти?"):
|
if messagebox.askokcancel("Выход", "Вы действительно хотите выйти?"):
|
||||||
root.destroy()
|
print("Закрытие игры...")
|
||||||
|
close_sessions() # Закрытие всех сессий перед выходом
|
||||||
|
root.quit() # Завершаем главный цикл приложения
|
||||||
|
root.destroy() # Закрытие окна
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""Основной запуск приложения."""
|
"""Основной запуск приложения."""
|
||||||
global root
|
global root
|
||||||
# Инициализируем базу данных
|
# Инициализация базы данных
|
||||||
init_db()
|
init_db()
|
||||||
|
|
||||||
# Запускаем графический интерфейс
|
# Создаем экземпляр приложения
|
||||||
root = Tk()
|
|
||||||
root.protocol("WM_DELETE_WINDOW", on_close)
|
|
||||||
app = DogAcademyApp(root)
|
app = DogAcademyApp(root)
|
||||||
root.mainloop()
|
root.protocol("WM_DELETE_WINDOW", on_close) # Перехват события закрытия окна
|
||||||
|
root.mainloop() # Запуск основного цикла обработки событий
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
root = Tk() # Создание корневого окна
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,11 +1,8 @@
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from PIL import Image, ImageTk
|
from PIL import Image, ImageTk
|
||||||
from config import SETTINGS_IMG
|
from config import SETTINGS_IMG
|
||||||
from src.admin_functions import db_management, admin_logging, statistics, content, knowledge_base
|
from src.admin_functions import admin_logging, statistics
|
||||||
from src.utils import clear_frame # Импортируем общую функцию для очистки фрейма
|
from src.utils import clear_frame, feature_in_development # Импортируем общую функцию для очистки фрейма
|
||||||
from database.db_session import get_session
|
|
||||||
from database.models import Notifications
|
|
||||||
from src.admin_functions.notification import Notification
|
|
||||||
|
|
||||||
|
|
||||||
# Конфигурация цветов из config.py
|
# Конфигурация цветов из config.py
|
||||||
|
|
@ -17,26 +14,12 @@ MENU_COLOR = "#2f2b38"
|
||||||
MENU_OPACITY = 0.9 # Прозрачность меню
|
MENU_OPACITY = 0.9 # Прозрачность меню
|
||||||
|
|
||||||
class AdminApp:
|
class AdminApp:
|
||||||
def __init__(self, root, master):
|
def __init__(self, root):
|
||||||
self.root = root
|
self.root = root
|
||||||
self.master = master
|
|
||||||
self.root.title("Админ-Панель")
|
self.root.title("Админ-Панель")
|
||||||
self.root.geometry("1920x1080")
|
self.root.geometry("1920x1080")
|
||||||
self.root.config(bg=BACKGROUND_COLOR)
|
self.root.config(bg=BACKGROUND_COLOR)
|
||||||
|
|
||||||
self.notification = Notification(self.master)
|
|
||||||
|
|
||||||
def edit_database(self):
|
|
||||||
# Логика редактирования базы данных
|
|
||||||
# Например, успешное редактирование
|
|
||||||
self.notification.show_info("Успех", "База данных успешно обновлена!")
|
|
||||||
|
|
||||||
def show_error(self, message):
|
|
||||||
self.notification.show_error("Ошибка", message)
|
|
||||||
|
|
||||||
def show_warning(self, message):
|
|
||||||
self.notification.show_warning("Предупреждение", message)
|
|
||||||
|
|
||||||
# Верхняя панель
|
# Верхняя панель
|
||||||
self.top_bar = tk.Frame(self.root, bg=TOP_BAR_COLOR, height=60)
|
self.top_bar = tk.Frame(self.root, bg=TOP_BAR_COLOR, height=60)
|
||||||
self.top_bar.pack(side="top", fill="x")
|
self.top_bar.pack(side="top", fill="x")
|
||||||
|
|
@ -72,7 +55,7 @@ class AdminApp:
|
||||||
activebackground=BUTTON_COLOR,
|
activebackground=BUTTON_COLOR,
|
||||||
activeforeground=TEXT_COLOR,
|
activeforeground=TEXT_COLOR,
|
||||||
bd=0,
|
bd=0,
|
||||||
command=self.toggle_menu # Проверьте, что эта команда правильно привязана
|
command=self.toggle_menu
|
||||||
)
|
)
|
||||||
self.menu_button.pack(side="right", padx=10, pady=10)
|
self.menu_button.pack(side="right", padx=10, pady=10)
|
||||||
|
|
||||||
|
|
@ -82,9 +65,9 @@ class AdminApp:
|
||||||
|
|
||||||
# Бургер-меню (скрытое по умолчанию)
|
# Бургер-меню (скрытое по умолчанию)
|
||||||
self.menu_frame = tk.Frame(self.root, bg=MENU_COLOR, width=300)
|
self.menu_frame = tk.Frame(self.root, bg=MENU_COLOR, width=300)
|
||||||
self.menu_frame.place(x=1620, y=60, width=300, height=1020) # Явно задаём ширину и высоту
|
self.menu_frame.place(x=1620, y=60, width=300, height=1020)
|
||||||
self.menu_frame.lower() # Прячем меню
|
self.menu_frame.lower()
|
||||||
self.menu_visible = False # Добавлен флаг для отслеживания состояния меню
|
self.menu_visible = False
|
||||||
|
|
||||||
def toggle_menu(self):
|
def toggle_menu(self):
|
||||||
"""Показ или скрытие меню."""
|
"""Показ или скрытие меню."""
|
||||||
|
|
@ -104,23 +87,23 @@ class AdminApp:
|
||||||
# Список разделов и их элементов
|
# Список разделов и их элементов
|
||||||
menu_sections = [
|
menu_sections = [
|
||||||
("Работа с базой данных", [
|
("Работа с базой данных", [
|
||||||
("Редактирование пользователей", db_management.edit_users),
|
("Редактирование пользователей", feature_in_development),
|
||||||
("Управление вопросами", db_management.manage_questions),
|
("Управление вопросами", feature_in_development),
|
||||||
("Просмотр таблиц", db_management.view_tables),
|
("Просмотр таблиц", feature_in_development),
|
||||||
]),
|
]),
|
||||||
("Управление игровым контентом", [
|
("Управление игровым контентом", [
|
||||||
("Создание и настройка уровней", content.manage_levels),
|
("Создание и настройка уровней", feature_in_development),
|
||||||
("Настройка параметров собаки", content.manage_dog_params),
|
("Настройка параметров собаки", feature_in_development),
|
||||||
]),
|
]),
|
||||||
("Управление интерфейсом пользователя", [
|
("Управление интерфейсом пользователя", [
|
||||||
("Добавление подсказок в интерфейс", self.manage_ui_tips),
|
("Добавление подсказок в интерфейс", feature_in_development),
|
||||||
]),
|
]),
|
||||||
("Работа с базой знаний", [
|
("Работа с базой знаний", [
|
||||||
("Добавление информации", knowledge_base.add_info),
|
("Добавление информации", feature_in_development),
|
||||||
("Редактирование записей", knowledge_base.edit_records),
|
("Редактирование записей", feature_in_development),
|
||||||
("Удаление записей", knowledge_base.delete_records),
|
("Удаление записей", feature_in_development),
|
||||||
("Просмотр базы знаний", knowledge_base.view_knowledge_base),
|
("Просмотр базы знаний", feature_in_development),
|
||||||
("Генерация вопросов", knowledge_base.generate_questions),
|
("Генерация вопросов", feature_in_development),
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -143,19 +126,15 @@ class AdminApp:
|
||||||
total_height = 0
|
total_height = 0
|
||||||
|
|
||||||
for title, items in menu_sections:
|
for title, items in menu_sections:
|
||||||
# Заголовок раздела
|
|
||||||
section_label = tk.Label(
|
section_label = tk.Label(
|
||||||
self.menu_frame,
|
self.menu_frame,
|
||||||
text=title,
|
text=title,
|
||||||
bg=MENU_COLOR,
|
bg=MENU_COLOR,
|
||||||
fg=TEXT_COLOR,
|
fg=TEXT_COLOR,
|
||||||
font=("Comic Sans MS", 14, "bold"),
|
font=("Comic Sans MS", 14, "bold"),
|
||||||
anchor="center" # Выравнивание по центру
|
|
||||||
)
|
)
|
||||||
section_label.pack(fill="x", padx=10, pady=5)
|
section_label.pack(fill="x", padx=10, pady=5)
|
||||||
total_height += button_height + section_spacing
|
|
||||||
|
|
||||||
# Кнопки раздела
|
|
||||||
for text, command in items:
|
for text, command in items:
|
||||||
item_button = tk.Button(
|
item_button = tk.Button(
|
||||||
self.menu_frame,
|
self.menu_frame,
|
||||||
|
|
@ -163,19 +142,12 @@ class AdminApp:
|
||||||
bg=BUTTON_COLOR,
|
bg=BUTTON_COLOR,
|
||||||
fg=TEXT_COLOR,
|
fg=TEXT_COLOR,
|
||||||
font=("Comic Sans MS", 12),
|
font=("Comic Sans MS", 12),
|
||||||
width=int(menu_width / 10) - 3, # Ширина кнопок зависит от ширины меню
|
|
||||||
height=1,
|
|
||||||
activebackground=BUTTON_COLOR,
|
activebackground=BUTTON_COLOR,
|
||||||
activeforeground=TEXT_COLOR,
|
activeforeground=TEXT_COLOR,
|
||||||
bd=0,
|
bd=0,
|
||||||
anchor="w", # Выравнивание текста по левому краю
|
command=lambda cmd=command: cmd(self.main_frame) # Передаём фрейм
|
||||||
command=lambda: command(self.main_frame) # Вызываем функцию и передаём фрейм
|
|
||||||
)
|
)
|
||||||
item_button.pack(fill="x", padx=20, pady=5)
|
item_button.pack(fill="x", padx=20, pady=5)
|
||||||
total_height += button_height + button_spacing
|
|
||||||
|
|
||||||
# Подстройка высоты меню
|
|
||||||
self.menu_frame.config(height=total_height)
|
|
||||||
|
|
||||||
def create_menu_section(self, title, items):
|
def create_menu_section(self, title, items):
|
||||||
section_label = tk.Label(self.menu_frame, text=title, bg=MENU_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 14, "bold"))
|
section_label = tk.Label(self.menu_frame, text=title, bg=MENU_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 14, "bold"))
|
||||||
|
|
@ -218,18 +190,26 @@ class AdminApp:
|
||||||
tk.Label(frame, text="Здесь будут подсказки для интерфейса", bg=BACKGROUND_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 16)).pack()
|
tk.Label(frame, text="Здесь будут подсказки для интерфейса", bg=BACKGROUND_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 16)).pack()
|
||||||
|
|
||||||
def show_notifications(self, frame):
|
def show_notifications(self, frame):
|
||||||
|
"""Отображение экрана уведомлений"""
|
||||||
clear_frame(frame) # Очищаем текущий экран
|
clear_frame(frame) # Очищаем текущий экран
|
||||||
session = get_session()
|
tk.Label(
|
||||||
notifications = session.query(Notifications).filter_by(
|
frame,
|
||||||
is_read=0).all() # Получаем все непрочитанные уведомления
|
text="Модуль <Уведомления> в разработке.\nВ планах реализовать: создание оповещений для пользователей (обновления, новости), сообщения от БД (корректность работы)",
|
||||||
for notification in notifications:
|
bg=BACKGROUND_COLOR,
|
||||||
tk.Label(frame, text=notification.message, bg=BACKGROUND_COLOR, fg=TEXT_COLOR,
|
fg=TEXT_COLOR,
|
||||||
font=("Comic Sans MS", 16)).pack()
|
font=("Comic Sans MS", 16)
|
||||||
session.close()
|
).pack(expand=True)
|
||||||
|
|
||||||
def show_security(self, frame):
|
def show_security(self, frame):
|
||||||
clear_frame(frame)
|
"""Отображение экрана безопасности"""
|
||||||
tk.Label(frame, text="Раздел Безопасность", bg=BACKGROUND_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 16)).pack()
|
clear_frame(frame) # Очищаем текущий экран
|
||||||
|
tk.Label(
|
||||||
|
frame,
|
||||||
|
text="Модуль <Безопасность> в разработке.\nВ планах реализовать: управление доступом (создание других админов, смена пароля администратора).",
|
||||||
|
bg=BACKGROUND_COLOR,
|
||||||
|
fg=TEXT_COLOR,
|
||||||
|
font=("Comic Sans MS", 16)
|
||||||
|
).pack(expand=True)
|
||||||
|
|
||||||
def change_ui_settings(self, frame):
|
def change_ui_settings(self, frame):
|
||||||
clear_frame(frame)
|
clear_frame(frame)
|
||||||
|
|
|
||||||
|
|
@ -219,4 +219,3 @@ class DogAcademyApp:
|
||||||
def show_user_dashboard(self):
|
def show_user_dashboard(self):
|
||||||
"""Перейти к главному меню пользователя после авторизации."""
|
"""Перейти к главному меню пользователя после авторизации."""
|
||||||
UserApp(self.root, self)
|
UserApp(self.root, self)
|
||||||
|
|
||||||
|
|
|
||||||
28
src/utils.py
28
src/utils.py
|
|
@ -1,4 +1,32 @@
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
def clear_frame(frame):
|
def clear_frame(frame):
|
||||||
"""Удаление всех виджетов из фрейма."""
|
"""Удаление всех виджетов из фрейма."""
|
||||||
for widget in frame.winfo_children():
|
for widget in frame.winfo_children():
|
||||||
widget.destroy()
|
widget.destroy()
|
||||||
|
|
||||||
|
def feature_in_development(frame):
|
||||||
|
"""Сообщение о том, что функционал недоступен."""
|
||||||
|
clear_frame(frame) # Очистка фрейма перед выводом сообщения
|
||||||
|
tk.Label(
|
||||||
|
frame,
|
||||||
|
text="Этот функционал пока что недоступен, в разработке.",
|
||||||
|
bg="#403d49", # Фон сообщения
|
||||||
|
fg="#b2acc0", # Цвет текста
|
||||||
|
font=("Comic Sans MS", 16)
|
||||||
|
).pack(expand=True)
|
||||||
|
|
||||||
|
|
||||||
|
def create_tooltip(widget, text):
|
||||||
|
"""Создание подсказки для виджета."""
|
||||||
|
tooltip = tk.Toplevel()
|
||||||
|
tooltip.wm_overrideredirect(True) # Отключаем рамки окна
|
||||||
|
tooltip.wm_geometry(f"+{widget.winfo_rootx() + 20}+{widget.winfo_rooty() + 20}")
|
||||||
|
label = tk.Label(tooltip, text=text, bg="#333", fg="#fff", font=("Comic Sans MS", 10), padx=5, pady=5)
|
||||||
|
label.pack()
|
||||||
|
|
||||||
|
def hide_tooltip(event):
|
||||||
|
tooltip.destroy()
|
||||||
|
|
||||||
|
widget.bind("<Enter>", lambda event: tooltip.deiconify())
|
||||||
|
widget.bind("<Leave>", hide_tooltip)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue