diff --git a/__pycache__/config.cpython-313.pyc b/__pycache__/config.cpython-313.pyc index a11615e..27b3c8f 100644 Binary files a/__pycache__/config.cpython-313.pyc and b/__pycache__/config.cpython-313.pyc differ diff --git a/config.py b/config.py index 3e41e86..ba3fe0d 100644 --- a/config.py +++ b/config.py @@ -24,5 +24,6 @@ DATABASE_URL = "sqlite:///database/DogAcademy.db" # Обновлено на п # Иконки SETTINGS_IMG = "assets/settings.png" -# Уровни уведомлений (для дальнейшей настройки) -NOTIFICATION_LEVEL = "info" # Возможные значения: "info", "warning", "error" \ No newline at end of file +# Утилиты +NOTIFICATION_LEVEL = "info" # Возможные значения: "info", "warning", "error" +USE_DATABASE_LOGS = True \ No newline at end of file diff --git a/database/__pycache__/db_events.cpython-313.pyc b/database/__pycache__/db_events.cpython-313.pyc index b221d76..ee32482 100644 Binary files a/database/__pycache__/db_events.cpython-313.pyc and b/database/__pycache__/db_events.cpython-313.pyc differ diff --git a/database/__pycache__/db_session.cpython-313.pyc b/database/__pycache__/db_session.cpython-313.pyc index d7d1221..2eda891 100644 Binary files a/database/__pycache__/db_session.cpython-313.pyc and b/database/__pycache__/db_session.cpython-313.pyc differ diff --git a/database/__pycache__/models.cpython-313.pyc b/database/__pycache__/models.cpython-313.pyc index 9b809a5..21b985a 100644 Binary files a/database/__pycache__/models.cpython-313.pyc and b/database/__pycache__/models.cpython-313.pyc differ diff --git a/database/db_events.py b/database/db_events.py index 7493fab..4a6eb60 100644 --- a/database/db_events.py +++ b/database/db_events.py @@ -25,21 +25,4 @@ def check_user(login, password): print(f"Ошибка при проверке пользователя: {e}") return False finally: - 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)}") \ No newline at end of file + session.close() \ No newline at end of file diff --git a/database/db_session.py b/database/db_session.py index e2729c3..bf7dff3 100644 --- a/database/db_session.py +++ b/database/db_session.py @@ -9,16 +9,42 @@ engine = create_engine(DATABASE_URL, echo=True) # Создание фабрики сессий Session = sessionmaker(bind=engine) -session = Session() -def init_db(): - """Инициализация базы данных: создание файла и таблиц.""" - if not os.path.exists("database/DogAcademy.db"): - print("База данных не найдена. Создаём новую...") - Base.metadata.create_all(bind=engine) +# Переменная для хранения текущей сессии +current_session = None + + +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: - print("База данных уже существует.") + print("База данных уже существует. Обновление не требуется.") + + # Инициализация сессии при запуске + current_session = get_session() + def get_session(): """Возвращает сессию для работы с базой данных.""" - return Session() \ No newline at end of file + return Session() + + +def close_sessions(): + """Закрытие всех сессий перед выходом из программы.""" + global current_session + if current_session is not None: + print("Закрытие сессии...") + current_session.close() # Закрываем текущую сессию базы данных + current_session = None + else: + print("Нет активной сессии для закрытия.") diff --git a/database/models.py b/database/models.py index 2189319..cb33f92 100644 --- a/database/models.py +++ b/database/models.py @@ -82,4 +82,3 @@ class Notifications(Base): # Связь с таблицей Users user = relationship("Users", back_populates="notifications") - diff --git a/logs/logfile.log b/logs/logfile.log index 1b57012..af11b0d 100644 --- a/logs/logfile.log +++ b/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 - 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 diff --git a/logs_export.csv b/logs_export.csv new file mode 100644 index 0000000..665d953 --- /dev/null +++ b/logs_export.csv @@ -0,0 +1,4 @@ +Дата,Тип,Сообщение +2024-11-21,INFO,Система запущена +2024-11-21,ERROR,Ошибка подключения к базе данных +2024-11-21,WARNING,Слабый пароль администратора diff --git a/src/__pycache__/utils.cpython-313.pyc b/src/__pycache__/utils.cpython-313.pyc index 5416ad6..38aeaa4 100644 Binary files a/src/__pycache__/utils.cpython-313.pyc and b/src/__pycache__/utils.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/admin_logging.cpython-313.pyc b/src/admin_functions/__pycache__/admin_logging.cpython-313.pyc index 0a722fc..c5bdf41 100644 Binary files a/src/admin_functions/__pycache__/admin_logging.cpython-313.pyc and b/src/admin_functions/__pycache__/admin_logging.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/content.cpython-313.pyc b/src/admin_functions/__pycache__/content.cpython-313.pyc index 67ab341..738b7ad 100644 Binary files a/src/admin_functions/__pycache__/content.cpython-313.pyc and b/src/admin_functions/__pycache__/content.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/db_management.cpython-313.pyc b/src/admin_functions/__pycache__/db_management.cpython-313.pyc index 5ae9899..a7c40b3 100644 Binary files a/src/admin_functions/__pycache__/db_management.cpython-313.pyc and b/src/admin_functions/__pycache__/db_management.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/knowledge_base.cpython-313.pyc b/src/admin_functions/__pycache__/knowledge_base.cpython-313.pyc index eb42481..558f9ec 100644 Binary files a/src/admin_functions/__pycache__/knowledge_base.cpython-313.pyc and b/src/admin_functions/__pycache__/knowledge_base.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/notification.cpython-313.pyc b/src/admin_functions/__pycache__/notification.cpython-313.pyc new file mode 100644 index 0000000..1bc62d5 Binary files /dev/null and b/src/admin_functions/__pycache__/notification.cpython-313.pyc differ diff --git a/src/admin_functions/__pycache__/statistics.cpython-313.pyc b/src/admin_functions/__pycache__/statistics.cpython-313.pyc index b999857..3b6c06c 100644 Binary files a/src/admin_functions/__pycache__/statistics.cpython-313.pyc and b/src/admin_functions/__pycache__/statistics.cpython-313.pyc differ diff --git a/src/admin_functions/admin_logging.py b/src/admin_functions/admin_logging.py index 411a4d2..9cf3bce 100644 --- a/src/admin_functions/admin_logging.py +++ b/src/admin_functions/admin_logging.py @@ -52,4 +52,3 @@ def export_logs(): writer.writerow(["Время", "Действие", "Пользователь"]) writer.writerows(data) print("Логи успешно экспортированы в logs.csv") - diff --git a/src/admin_functions/knowledge_base.py b/src/admin_functions/knowledge_base.py index 88dadaa..539c3d6 100644 --- a/src/admin_functions/knowledge_base.py +++ b/src/admin_functions/knowledge_base.py @@ -42,6 +42,7 @@ def view_knowledge_base(frame): def generate_questions(frame): + print("Я по приколу вызвался") """Генерация вопросов на основе текстов.""" clear_frame(frame) tk.Label(frame, text="Генерация вопросов", font=("Comic Sans MS", 16)).pack() diff --git a/src/admin_functions/notification.py b/src/admin_functions/notification.py index 2d17ae5..c7da8e2 100644 --- a/src/admin_functions/notification.py +++ b/src/admin_functions/notification.py @@ -1,21 +1,17 @@ -from tkinter import messagebox +import tkinter as tk +from datetime import datetime class Notification: - def __init__(self, root): - self.root = root + def __init__(self, parent, message, timestamp): + self.frame = tk.Frame(parent, bg="#2f2b38", pady=5) + self.frame.pack(fill="x", pady=5) - def show_info(self, title, message): - """Отображение информационного уведомления""" - messagebox.showinfo(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) - def show_warning(self, title, message): - """Отображение предупреждения""" - messagebox.showwarning(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) - def show_error(self, title, message): - """Отображение ошибки""" - messagebox.showerror(title, message) - - def show_notification(self, title, message): - """Отображение общего уведомления""" - self.show_info(title, message) + def format_timestamp(self, timestamp): + """Форматирование метки времени.""" + return datetime.strptime(str(timestamp), "%Y-%m-%d %H:%M:%S").strftime("%d-%m-%Y %H:%M:%S") diff --git a/src/main.py b/src/main.py index 992fe5d..73f6bb3 100644 --- a/src/main.py +++ b/src/main.py @@ -1,24 +1,26 @@ -from tkinter import Tk -from tkinter import messagebox -from src.ui.auth_ui import DogAcademyApp # Изменил на правильный путь -from database.db_session import init_db +from tkinter import Tk, messagebox +from src.ui.auth_ui import DogAcademyApp # Путь к приложению +from database.db_session import init_db, close_sessions # Функция для закрытия сессий def on_close(): """Обработчик закрытия окна.""" if messagebox.askokcancel("Выход", "Вы действительно хотите выйти?"): - root.destroy() + print("Закрытие игры...") + close_sessions() # Закрытие всех сессий перед выходом + root.quit() # Завершаем главный цикл приложения + root.destroy() # Закрытие окна def main(): """Основной запуск приложения.""" global root - # Инициализируем базу данных + # Инициализация базы данных init_db() - # Запускаем графический интерфейс - root = Tk() - root.protocol("WM_DELETE_WINDOW", on_close) + # Создаем экземпляр приложения app = DogAcademyApp(root) - root.mainloop() + root.protocol("WM_DELETE_WINDOW", on_close) # Перехват события закрытия окна + root.mainloop() # Запуск основного цикла обработки событий if __name__ == "__main__": + root = Tk() # Создание корневого окна main() diff --git a/src/ui/__pycache__/admin_ui.cpython-313.pyc b/src/ui/__pycache__/admin_ui.cpython-313.pyc index af8aa7a..c80b50d 100644 Binary files a/src/ui/__pycache__/admin_ui.cpython-313.pyc and b/src/ui/__pycache__/admin_ui.cpython-313.pyc differ diff --git a/src/ui/__pycache__/auth_ui.cpython-313.pyc b/src/ui/__pycache__/auth_ui.cpython-313.pyc index 3ab9d5c..833dcab 100644 Binary files a/src/ui/__pycache__/auth_ui.cpython-313.pyc and b/src/ui/__pycache__/auth_ui.cpython-313.pyc differ diff --git a/src/ui/admin_ui.py b/src/ui/admin_ui.py index 3561b5a..7f7fcc5 100644 --- a/src/ui/admin_ui.py +++ b/src/ui/admin_ui.py @@ -1,11 +1,8 @@ import tkinter as tk from PIL import Image, ImageTk from config import SETTINGS_IMG -from src.admin_functions import db_management, admin_logging, statistics, content, knowledge_base -from src.utils import clear_frame # Импортируем общую функцию для очистки фрейма -from database.db_session import get_session -from database.models import Notifications -from src.admin_functions.notification import Notification +from src.admin_functions import admin_logging, statistics +from src.utils import clear_frame, feature_in_development # Импортируем общую функцию для очистки фрейма # Конфигурация цветов из config.py @@ -17,26 +14,12 @@ MENU_COLOR = "#2f2b38" MENU_OPACITY = 0.9 # Прозрачность меню class AdminApp: - def __init__(self, root, master): + def __init__(self, root): self.root = root - self.master = master self.root.title("Админ-Панель") self.root.geometry("1920x1080") 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.pack(side="top", fill="x") @@ -72,7 +55,7 @@ class AdminApp: activebackground=BUTTON_COLOR, activeforeground=TEXT_COLOR, bd=0, - command=self.toggle_menu # Проверьте, что эта команда правильно привязана + command=self.toggle_menu ) 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.place(x=1620, y=60, width=300, height=1020) # Явно задаём ширину и высоту - self.menu_frame.lower() # Прячем меню - self.menu_visible = False # Добавлен флаг для отслеживания состояния меню + self.menu_frame.place(x=1620, y=60, width=300, height=1020) + self.menu_frame.lower() + self.menu_visible = False def toggle_menu(self): """Показ или скрытие меню.""" @@ -104,23 +87,23 @@ class AdminApp: # Список разделов и их элементов menu_sections = [ ("Работа с базой данных", [ - ("Редактирование пользователей", db_management.edit_users), - ("Управление вопросами", db_management.manage_questions), - ("Просмотр таблиц", db_management.view_tables), + ("Редактирование пользователей", feature_in_development), + ("Управление вопросами", feature_in_development), + ("Просмотр таблиц", feature_in_development), ]), ("Управление игровым контентом", [ - ("Создание и настройка уровней", content.manage_levels), - ("Настройка параметров собаки", content.manage_dog_params), + ("Создание и настройка уровней", feature_in_development), + ("Настройка параметров собаки", feature_in_development), ]), ("Управление интерфейсом пользователя", [ - ("Добавление подсказок в интерфейс", self.manage_ui_tips), + ("Добавление подсказок в интерфейс", feature_in_development), ]), ("Работа с базой знаний", [ - ("Добавление информации", knowledge_base.add_info), - ("Редактирование записей", knowledge_base.edit_records), - ("Удаление записей", knowledge_base.delete_records), - ("Просмотр базы знаний", knowledge_base.view_knowledge_base), - ("Генерация вопросов", knowledge_base.generate_questions), + ("Добавление информации", feature_in_development), + ("Редактирование записей", feature_in_development), + ("Удаление записей", feature_in_development), + ("Просмотр базы знаний", feature_in_development), + ("Генерация вопросов", feature_in_development), ]), ] @@ -143,19 +126,15 @@ class AdminApp: total_height = 0 for title, items in menu_sections: - # Заголовок раздела section_label = tk.Label( self.menu_frame, text=title, bg=MENU_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 14, "bold"), - anchor="center" # Выравнивание по центру ) section_label.pack(fill="x", padx=10, pady=5) - total_height += button_height + section_spacing - # Кнопки раздела for text, command in items: item_button = tk.Button( self.menu_frame, @@ -163,19 +142,12 @@ class AdminApp: bg=BUTTON_COLOR, fg=TEXT_COLOR, font=("Comic Sans MS", 12), - width=int(menu_width / 10) - 3, # Ширина кнопок зависит от ширины меню - height=1, activebackground=BUTTON_COLOR, activeforeground=TEXT_COLOR, bd=0, - anchor="w", # Выравнивание текста по левому краю - command=lambda: command(self.main_frame) # Вызываем функцию и передаём фрейм + command=lambda cmd=command: cmd(self.main_frame) # Передаём фрейм ) 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): 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() def show_notifications(self, frame): + """Отображение экрана уведомлений""" clear_frame(frame) # Очищаем текущий экран - session = get_session() - notifications = session.query(Notifications).filter_by( - is_read=0).all() # Получаем все непрочитанные уведомления - for notification in notifications: - tk.Label(frame, text=notification.message, bg=BACKGROUND_COLOR, fg=TEXT_COLOR, - font=("Comic Sans MS", 16)).pack() - session.close() + tk.Label( + frame, + text="Модуль <Уведомления> в разработке.\nВ планах реализовать: создание оповещений для пользователей (обновления, новости), сообщения от БД (корректность работы)", + bg=BACKGROUND_COLOR, + fg=TEXT_COLOR, + font=("Comic Sans MS", 16) + ).pack(expand=True) 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): clear_frame(frame) diff --git a/src/ui/auth_ui.py b/src/ui/auth_ui.py index 7e0f3ae..88e76b7 100644 --- a/src/ui/auth_ui.py +++ b/src/ui/auth_ui.py @@ -219,4 +219,3 @@ class DogAcademyApp: def show_user_dashboard(self): """Перейти к главному меню пользователя после авторизации.""" UserApp(self.root, self) - diff --git a/src/utils.py b/src/utils.py index 4250849..f6c0b15 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,4 +1,32 @@ +import tkinter as tk + def clear_frame(frame): """Удаление всех виджетов из фрейма.""" for widget in frame.winfo_children(): 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("", lambda event: tooltip.deiconify()) + widget.bind("", hide_tooltip) \ No newline at end of file