feat: добавлен модуль базы данных и модели пользователя
- Создан файл `__init__.py` в папке `lkeep/database/models` для инициализации модуля. - Создан класс `Base` в `base.py` как базовый класс для всех ORM-моделей. - Добавлена модель `User` в `user.py`, представляющая пользователя с необходимыми атрибутами.
This commit is contained in:
parent
a53ffb5213
commit
e8de7e21f2
7
lkeep/database/__init__.py
Normal file
7
lkeep/database/__init__.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
"""
|
||||||
|
Проект: Lkeep
|
||||||
|
Автор: Иван Ашихмин
|
||||||
|
Год: 2025
|
||||||
|
Специально для проекта "Код на салфетке"
|
||||||
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||||
|
"""
|
13
lkeep/database/models/__init__.py
Normal file
13
lkeep/database/models/__init__.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
"""
|
||||||
|
Проект: Lkeep
|
||||||
|
Автор: Иван Ашихмин
|
||||||
|
Год: 2025
|
||||||
|
Специально для проекта "Код на салфетке"
|
||||||
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from lkeep.database.models.base import Base
|
||||||
|
from lkeep.database.models.user import User
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ("Base", "User")
|
25
lkeep/database/models/base.py
Normal file
25
lkeep/database/models/base.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
"""
|
||||||
|
Проект: Lkeep
|
||||||
|
Автор: Иван Ашихмин
|
||||||
|
Год: 2025
|
||||||
|
Специально для проекта "Код на салфетке"
|
||||||
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from sqlalchemy.orm import DeclarativeBase, declared_attr
|
||||||
|
|
||||||
|
|
||||||
|
class Base(DeclarativeBase):
|
||||||
|
"""
|
||||||
|
Базовый класс для моделей ORM, использующих SQLAlchemy.
|
||||||
|
"""
|
||||||
|
|
||||||
|
@declared_attr.directive
|
||||||
|
def __tablename__(cls) -> str:
|
||||||
|
"""
|
||||||
|
Определяет название таблицы в базе данных на основе имени класса.
|
||||||
|
|
||||||
|
:return: Название таблицы в формате snake_case.
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
|
return cls.__name__.lower()
|
37
lkeep/database/models/user.py
Normal file
37
lkeep/database/models/user.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
"""
|
||||||
|
Проект: Lkeep
|
||||||
|
Автор: Иван Ашихмин
|
||||||
|
Год: 2025
|
||||||
|
Специально для проекта "Код на салфетке"
|
||||||
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from sqlalchemy import Boolean, String, Text
|
||||||
|
from sqlalchemy.orm import Mapped, mapped_column
|
||||||
|
|
||||||
|
from lkeep.database.mixins.id_mixins import IDMixin
|
||||||
|
from lkeep.database.mixins.timestamp_mixins import TimestampsMixin
|
||||||
|
from lkeep.database.models.base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class User(IDMixin, TimestampsMixin, Base):
|
||||||
|
"""
|
||||||
|
Класс User представляет пользователя в системе.
|
||||||
|
|
||||||
|
:ivar email: Email адрес пользователя.
|
||||||
|
:type email: str
|
||||||
|
:ivar hashed_password: Хэшированный пароль пользователя.
|
||||||
|
:type hashed_password: str
|
||||||
|
:ivar is_active: Флаг активности пользователя (True или False).
|
||||||
|
:type is_active: bool
|
||||||
|
:ivar is_superuser: Флаг суперпользователя (True или False).
|
||||||
|
:type is_superuser: bool
|
||||||
|
:ivar is_verified: Флаг подтверждения аккаунта (True или False).
|
||||||
|
:type is_verified: bool
|
||||||
|
"""
|
||||||
|
|
||||||
|
email: Mapped[str] = mapped_column(String(100), unique=True, nullable=False)
|
||||||
|
hashed_password: Mapped[str] = mapped_column(Text, unique=False, nullable=False)
|
||||||
|
is_active: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
|
||||||
|
is_superuser: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
|
||||||
|
is_verified: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
|
Loading…
x
Reference in New Issue
Block a user