Init commit
This commit is contained in:
commit
d6e00c56e7
49 changed files with 2324 additions and 0 deletions
6
Mousey/Database/Models/__init__.py
Normal file
6
Mousey/Database/Models/__init__.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
__all__ = ["Base", "News", "Users"]
|
||||
|
||||
from .base import Base
|
||||
from .news import News
|
||||
from .user import Users
|
||||
|
||||
14
Mousey/Database/Models/base.py
Normal file
14
Mousey/Database/Models/base.py
Normal 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())
|
||||
|
||||
28
Mousey/Database/Models/news.py
Normal file
28
Mousey/Database/Models/news.py
Normal 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)
|
||||
|
||||
24
Mousey/Database/Models/user.py
Normal file
24
Mousey/Database/Models/user.py
Normal 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)
|
||||
|
||||
Reference in a new issue