Init commit

This commit is contained in:
Kirill Samoylenkov 2025-08-22 11:37:26 +07:00
commit d6e00c56e7
49 changed files with 2324 additions and 0 deletions

View file

@ -0,0 +1,6 @@
__all__ = ["Base", "News", "Users"]
from .base import Base
from .news import News
from .user import Users

View file

@ -0,0 +1,14 @@
from sqlalchemy import DateTime, func
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
"""
Основной шаблон для схем в базе данных.
"""
# Информация о том, когда была добавлена строка в БД
added: Mapped[DateTime] = mapped_column(DateTime, default=func.now())
# Информация о том, когда последний раз была обновлена строчка
updated: Mapped[DateTime] = mapped_column(DateTime, default=func.now(), onupdate=func.now())

View file

@ -0,0 +1,28 @@
from sqlalchemy import String, Text
from sqlalchemy.orm import Mapped, mapped_column
from Mousey.Misc import NewsStatus
from .base import Base
class News(Base):
"""
Схема для хранения информации о предложенных новостях в БД.
"""
__tablename__ = "news"
# Уникальный ID новости
news_id: Mapped[int] = mapped_column(primary_key=True, unique=True, autoincrement=True)
# Информация о пользователе, который предложил новость
tg_id: Mapped[int] = mapped_column(nullable=False)
tg_username: Mapped[str] = mapped_column(String(32), nullable=True)
# Текст новости и контакты для связи
text: Mapped[str] = mapped_column(Text, nullable=False)
contact: Mapped[str] = mapped_column(Text, nullable=True)
# Статус новости
status: Mapped[str] = mapped_column(String(3), default=NewsStatus.UNSEEN.value, nullable=False)

View file

@ -0,0 +1,24 @@
from sqlalchemy import String
from sqlalchemy.orm import Mapped, mapped_column
from .base import Base
from Mousey.Misc import UserRole
class Users(Base):
"""
Схема для хранения информации о пользователях бота в БД.
"""
__tablename__ = "user"
# Уникальный ID пользователя (Telegram ID)
tg_id: Mapped[int] = mapped_column(primary_key=True, unique=True, autoincrement=False)
# Статистика по новостям у пользователя
all_news: Mapped[int] = mapped_column(default=0, nullable=False)
unseen_news: Mapped[int] = mapped_column(default=0, nullable=False)
# Роль пользователя для бота
role: Mapped[str] = mapped_column(String(16), default=UserRole.USER.value, nullable=False)