refactor MediaGroup. Add database
This commit is contained in:
128
database/db.py
128
database/db.py
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user