This commit is contained in:
dj
2025-10-10 07:04:08 +03:00
parent 9a48d6f60f
commit c9099dac69
26 changed files with 738 additions and 405 deletions
+28 -83
View File
@@ -4,28 +4,37 @@ import sqlite3
from pydantic import BaseModel
from tgbot.data.config import PATH_DATABASE
from tgbot.database.db_helper import dict_factory, update_format_where, update_format
from tgbot.database.adb_helper import Databasex, dict_factory, update_format
from tgbot.utils.const_functions import get_unix, ded
# Модель таблицы
class UserModel(BaseModel):
increment: int # Инкремент записи
user_id: int # Айди пользователя
user_login: str # Юзернейм пользователя
user_name: str # Имя пользователя
user_surname: str # Фамилия пользователя
user_fullname: str # Полное имя + фамилия пользователя
user_unix: int # Дата регистрации пользователя в боте (в UNIX времени)
# Table model
class ModelBase(BaseModel):
increment: int # increment
user_id: int # User id
user_login: str # User username
user_name: str # User name
user_surname: str # User surname
user_fullname: str # User fullname (name + surname)
user_unix: int # Date of user registration in the bot (in UNIX time)
class Config:
json_schema_extra = {
'storage_name': 'storage_users'
}
# Работа с юзером
class Userx:
storage_name = "storage_users"
# Users
class Usersx(Databasex[ModelBase]):
def __init__(self):
super().__init__()
self.table_model = ModelBase
self.storage_name = self.table_model.model_json_schema()['storage_name']
self.column_one = False
# Добавление записи
@staticmethod
# Add entry
def add(
self,
user_id: int,
user_login: str,
user_name: str,
@@ -39,7 +48,7 @@ class Userx:
con.execute(
ded(f"""
INSERT INTO {Userx.storage_name} (
INSERT INTO {self.storage_name} (
user_id,
user_login,
user_name,
@@ -58,76 +67,12 @@ class Userx:
],
)
# Получение записи
@staticmethod
def get(**kwargs) -> UserModel:
# Edit entry
def update(self, user_id: int, **kwargs):
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"SELECT * FROM {Userx.storage_name}"
sql, parameters = update_format_where(sql, kwargs)
response = con.execute(sql, parameters).fetchone()
if response is not None:
response = UserModel(**response)
return response
# Получение записей
@staticmethod
def gets(**kwargs) -> list[UserModel]:
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"SELECT * FROM {Userx.storage_name}"
sql, parameters = update_format_where(sql, kwargs)
response = con.execute(sql, parameters).fetchall()
if len(response) >= 1:
response = [UserModel(**cache_object) for cache_object in response]
return response
# Получение всех записей
@staticmethod
def get_all() -> list[UserModel]:
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"SELECT * FROM {Userx.storage_name}"
response = con.execute(sql).fetchall()
if len(response) >= 1:
response = [UserModel(**cache_object) for cache_object in response]
return response
# Редактирование записи
@staticmethod
def update(user_id, **kwargs):
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"UPDATE {Userx.storage_name} SET"
sql = f"UPDATE {self.storage_name} SET"
sql, parameters = update_format(sql, kwargs)
parameters.append(user_id)
con.execute(sql + "WHERE user_id = ?", parameters)
# Удаление записи
@staticmethod
def delete(**kwargs):
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"DELETE FROM {Userx.storage_name}"
sql, parameters = update_format_where(sql, kwargs)
con.execute(sql, parameters)
# Очистка всех записей
@staticmethod
def clear():
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"DELETE FROM {Userx.storage_name}"
con.execute(sql)