diff --git a/models/client.py b/models/client.py index 55e7a3f..96d7e02 100644 --- a/models/client.py +++ b/models/client.py @@ -1,5 +1,7 @@ +from typing import Optional + from sqlalchemy import Column, Integer, String, DateTime, ForeignKey -from sqlalchemy.orm import relationship +from sqlalchemy.orm import relationship, Mapped, mapped_column from models import BaseModel @@ -23,7 +25,8 @@ class Client(BaseModel): barcode_template_id = Column(Integer, ForeignKey('barcode_templates.id'), nullable=True) barcode_template = relationship('BarcodeTemplate', lazy='selectin') - # users = relationship('ClientUser', back_populates='client', cascade='all, delete') + + comment: Mapped[Optional[str]] = mapped_column(nullable=True, server_default=None, comment='Комментарий') class ClientDetails(BaseModel): @@ -44,7 +47,6 @@ class ClientDetails(BaseModel): modified_by_user_id = Column(Integer, ForeignKey('users.id'), nullable=False) modified_by_user = relationship('User') - # class ClientContact(BaseModel): # __tablename__ = 'client_contact' # id: Mapped[int] = mapped_column(primary_key=True) diff --git a/schemas/client.py b/schemas/client.py index 40aaa4b..3b95f4e 100644 --- a/schemas/client.py +++ b/schemas/client.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, Optional from pydantic import field_validator @@ -23,6 +23,7 @@ class ClientSchema(BaseSchema): name: str company_name: str barcode_template: BarcodeTemplateSchema | None = None + comment: Optional[str] = None details: ClientDetailsSchema | None = None diff --git a/services/client.py b/services/client.py index e457238..406a182 100644 --- a/services/client.py +++ b/services/client.py @@ -80,7 +80,19 @@ class ClientService(BaseService): client = await self.get_by_name(request.data.name) if client: return ClientCreateResponse(ok=False, message='Клиент с таким именем уже существует') - await self.create_client_raw(user, request.data.name, request.data.details) + client_dict = request.data.dict() + del client_dict['details'] + del client_dict['barcode_template'] + if request.data.barcode_template: + client_dict['barcode_template_id'] = request.data.barcode_template.id + client_dict['created_at'] = datetime.datetime.now() + + client = Client(**client_dict) + self.session.add(client) + await self.session.flush() + await self.create_details(user, client, request.data.details) + + # await self.create_client_raw(user, request.data.name, request.data.details) await self.session.commit() return ClientCreateResponse(ok=True, message='Client created') except Exception as e: