Files
Bot-Template/tgbot/database/db_users.py
T
2025-10-10 07:06:23 +03:00

79 lines
2.2 KiB
Python

# - *- coding: utf- 8 - *-
import sqlite3
from pydantic import BaseModel
from tgbot.data.config import PATH_DATABASE
from tgbot.database.adb_helper import Databasex, dict_factory, update_format
from tgbot.utils.const_functions import get_unix, ded
# 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'
}
# 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
# Add entry
def add(
self,
user_id: int,
user_login: str,
user_name: str,
user_surname: str,
user_fullname: str,
):
user_unix = get_unix()
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
con.execute(
ded(f"""
INSERT INTO {self.storage_name} (
user_id,
user_login,
user_name,
user_surname,
user_fullname,
user_unix
) VALUES (?, ?, ?, ?, ?, ?)
"""),
[
user_id,
user_login,
user_name,
user_surname,
user_fullname,
user_unix,
],
)
# Edit entry
def update(self, user_id: int, **kwargs):
with sqlite3.connect(PATH_DATABASE) as con:
con.row_factory = dict_factory
sql = f"UPDATE {self.storage_name} SET"
sql, parameters = update_format(sql, kwargs)
parameters.append(user_id)
con.execute(sql + "WHERE user_id = ?", parameters)