refactor MediaGroup. Add database

This commit is contained in:
KatykhinAA
2024-07-20 16:54:43 +03:00
parent 54234e59ec
commit 0b7f718f8a
11 changed files with 193 additions and 92 deletions

View File

@@ -1,14 +1,16 @@
import sqlite3
import os
import sqlite3
from datetime import datetime
from logs.custom_logger import logger
# Получение абсолютного пути к текущей директории
current_dir = os.getcwd()
# current_dir = os.getcwd()
class BotDB:
def __init__(self, name):
def __init__(self, current_dir, name):
self.db_file = os.path.join(current_dir, name)
self.conn = None
self.cursor = None
@@ -59,7 +61,7 @@ class BotDB:
self.logger.info(f'Получена текущая версия миграции: {version}')
return version
except Exception as e:
self.logger.error(f'Ошибка при получении текущей версии миграции: {e}')
self.logger.error(f'Ошибка при получении текущей версии миграции: {str(e)}')
raise
finally:
self.close()
@@ -298,11 +300,6 @@ class BotDB:
finally:
self.close()
def change_name(self, user_id):
#TODO: реализовать функцию изменения имени пользователя по которому к нему обращается бот. Обновляем поля first_name, date_changed
#result = self.cursor.execute("UPDATE 'our_users' SET (?) WHERE user_id = (?)", (new_user_name), )
pass
def get_info_about_stickers(self, user_id: int):
"""
Проверяет, получил ли пользователь стикеры.
@@ -825,38 +822,23 @@ class BotDB:
finally:
self.close()
def add_post_from_telegram_in_db(self, group_message_id, message_id, is_last_message_id, content_name, text):
self.logger.info(
f"Запуск функции add_post_from_telegram_in_db: group_message_id={group_message_id}, message_id={message_id}"
f", is_last_message_id={is_last_message_id}, content_name={content_name}, text={text}")
try:
self.connect()
self.cursor.execute(
"INSERT INTO posts_from_telegram (group_message_id, message_id, is_last_message_id, content_name, text)"
"VALUES (?, ?, ?, ?, ?)", (group_message_id, message_id, is_last_message_id, content_name, text))
self.conn.commit()
self.logger.info(f"Функция add_post_from_telegram_in_db отработала успешно")
return True
except Exception as e:
self.logger.error(f"Ошибка в функции add_post_from_telegram_in_db при добавлении поста в базу данных: {e}")
return False
def get_post_content_from_telegram_by_last_id(self, last_post_id: int):
self.logger.info(
f"Запуск функции get_post_content_from_telegram_by_last_id, идентификатор поста {last_post_id}")
try:
self.connect()
main_post_sql = self.cursor.execute("SELECT group_message_id "
"FROM posts_from_telegram WHERE message_id = ?", (last_post_id,))
main_post = main_post_sql.fetchone()[0]
except Exception as e:
self.logger.error(f"Ошибка в функции get_post_content_from_telegram_by_last_id {str(e)}")
return False
try:
result = self.cursor.execute("SELECT content_name "
"FROM posts_from_telegram WHERE group_message_id = ?", (main_post,))
result = self.cursor.execute("""
SELECT cpft.content_name
FROM post_from_telegram_suggest pft
JOIN message_link_to_content mltc
ON pft.message_id = mltc.post_id
JOIN content_post_from_telegram cpft
ON cpft.message_id = mltc.message_id
WHERE pft.helper_text_message_id = ?
""", (last_post_id,))
post_content = result.fetchall()
self.logger.info(f"Функция get_post_content_from_telegram_by_last_id получила список контента: {post_content}")
self.logger.info(
f"Функция get_post_content_from_telegram_by_last_id получила список контента: {post_content}")
return post_content
finally:
self.close()
@@ -866,18 +848,20 @@ class BotDB:
f"Запуск функции get_post_ids_from_telegram_by_last_id, идентификатор поста {last_post_id}")
try:
self.connect()
main_post_sql = self.cursor.execute("SELECT group_message_id "
"FROM posts_from_telegram WHERE message_id = ?", (last_post_id,))
main_post = main_post_sql.fetchone()[0]
result = self.cursor.execute("""
SELECT mltc.message_id
FROM post_from_telegram_suggest pft
JOIN message_link_to_content mltc
ON pft.message_id = mltc.post_id
WHERE pft.helper_text_message_id = ?
""", (last_post_id,))
post_ids = result.fetchall()
self.logger.info(f"Функция get_post_ids_from_telegram_by_last_id "
f"получила идентификаторы сообщений: {post_ids}")
return post_ids
except Exception as e:
self.logger.error(f"Ошибка в функции get_post_ids_from_telegram_by_last_id {str(e)}")
return False
try:
result = self.cursor.execute("SELECT message_id "
"FROM posts_from_telegram WHERE group_message_id = ?", (main_post,))
post_ids = result.fetchall()
self.logger.info(f"Функция get_post_ids_from_telegram_by_last_id получила идентификаторы сообщений: {post_ids}")
return post_ids
finally:
self.close()
@@ -886,13 +870,67 @@ class BotDB:
try:
self.connect()
result = self.cursor.execute("SELECT text "
"FROM posts_from_telegram WHERE message_id = ?", (last_post_id,))
"FROM post_from_telegram_suggest WHERE helper_text_message_id = ?",
(last_post_id,))
text = result.fetchone()[0]
self.logger.info(f"Функция get_post_text_from_telegram_by_last_id получила text")
return text
except Exception as e:
self.logger.error(f"Ошибка в функции get_post_text_from_telegram_by_last_id {str(e)}")
def add_post_content_in_db(self, post_id: int, message_id: int, content_name: str):
self.logger.info(
f"Запуск функции add_post_content_in_db: post_id={post_id}, message_id={message_id}, "
f"content_name={content_name}")
try:
self.connect()
self.cursor.execute(
"INSERT INTO message_link_to_content (post_id, message_id)"
"VALUES (?, ?)", (post_id, message_id))
self.conn.commit()
self.cursor.execute(
"INSERT INTO content_post_from_telegram (message_id, content_name)"
"VALUES (?, ?)", (message_id, content_name))
self.conn.commit()
self.logger.info(f"Функция add_post_content_in_db отработала успешно")
return True
except Exception as e:
self.logger.error(f"Ошибка в функции add_post_content_in_db при добавлении поста в базу данных: {e}")
return False
def add_post_in_db(self, message_id: int, text: str, author_id: int):
self.logger.info(
f"Запуск функции add_post_in_db: message_id={message_id}, "
f"author_id={author_id}")
try:
today = datetime.now().strftime("%d-%m-%Y %H:%M:%S")
self.connect()
self.cursor.execute(
"INSERT INTO post_from_telegram_suggest (message_id, text, author_id, created_at)"
"VALUES (?, ?, ?, ?)", (message_id, text, author_id, today))
self.conn.commit()
self.logger.info(f"Функция add_post_in_db отработала успешно")
return True
except Exception as e:
self.logger.error(f"Ошибка в функции add_post_in_db при добавлении поста в базу данных: {e}")
return False
def update_helper_message_in_db(self, message_id: int, helper_message_id: int):
self.logger.info(
f"Запуск функции update_helper_message_in_db: message_id={message_id}, "
f"helper_message_id={helper_message_id}")
try:
self.connect()
self.cursor.execute(
"UPDATE post_from_telegram_suggest SET helper_text_message_id = ? WHERE message_id = ?",
(helper_message_id, message_id,))
self.conn.commit()
self.logger.info(f"Функция update_helper_message_in_db отработала успешно")
return True
except Exception as e:
self.logger.error(f"Ошибка в функции update_helper_message_in_db при добавлении поста в базу данных: {e}")
return False
def add_audio_record(self, file_name, author_id, date_added, listen_count, file_id):
"""Добавляет информацию о войсе юзера в БД"""
self.logger.info(