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