feat: client endpoints for clients page
This commit is contained in:
1
modules/clients/models/__init__.py
Normal file
1
modules/clients/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .client import Client as Client, ClientDetails as ClientDetails
|
||||
51
modules/clients/models/client.py
Normal file
51
modules/clients/models/client.py
Normal file
@ -0,0 +1,51 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.orm import relationship, Mapped, mapped_column
|
||||
|
||||
from models.base import BaseModel
|
||||
from models.mixins import IdMixin, CreatedAtMixin, SoftDeleteMixin, LastModifiedAtMixin
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models import Product
|
||||
|
||||
|
||||
class Client(BaseModel, IdMixin, CreatedAtMixin, SoftDeleteMixin):
|
||||
__tablename__ = "clients"
|
||||
|
||||
name: Mapped[str] = mapped_column(unique=True, comment="Название клиента")
|
||||
|
||||
company_name: Mapped[str] = mapped_column(
|
||||
nullable=False,
|
||||
comment="Название компании",
|
||||
)
|
||||
|
||||
products: Mapped[list["Product"]] = relationship(
|
||||
back_populates="client", lazy="noload"
|
||||
)
|
||||
|
||||
details: Mapped["ClientDetails"] = relationship(
|
||||
uselist=False,
|
||||
back_populates="client",
|
||||
cascade="all, delete",
|
||||
lazy="joined",
|
||||
)
|
||||
|
||||
comment: Mapped[Optional[str]] = mapped_column(comment="Комментарий")
|
||||
|
||||
|
||||
class ClientDetails(BaseModel, IdMixin, LastModifiedAtMixin):
|
||||
__tablename__ = "client_details"
|
||||
|
||||
client_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("clients.id"), unique=True, comment="ID клиента"
|
||||
)
|
||||
client: Mapped[Client] = relationship(
|
||||
back_populates="details", cascade="all, delete", uselist=False
|
||||
)
|
||||
|
||||
telegram: Mapped[Optional[str]] = mapped_column()
|
||||
phone_number: Mapped[Optional[str]] = mapped_column()
|
||||
inn: Mapped[Optional[str]] = mapped_column()
|
||||
email: Mapped[Optional[str]] = mapped_column()
|
||||
Reference in New Issue
Block a user