fix: client delete fix
This commit is contained in:
@@ -22,6 +22,11 @@ class Client(BaseModel):
|
||||
)
|
||||
|
||||
created_at: Mapped[datetime] = mapped_column(nullable=False, comment='Дата создания')
|
||||
is_deleted: Mapped[bool] = mapped_column(
|
||||
nullable=False,
|
||||
default=False,
|
||||
server_default='0',
|
||||
)
|
||||
|
||||
products: Mapped[list['Product']] = relationship('Product', back_populates='client')
|
||||
details: Mapped['ClientDetails'] = relationship(
|
||||
|
||||
@@ -28,6 +28,7 @@ class ClientSchema(BaseSchema):
|
||||
comment: Optional[str] = None
|
||||
details: ClientDetailsSchema | None = None
|
||||
chat: ChatSchema | None = None
|
||||
is_deleted: bool | None = False
|
||||
|
||||
|
||||
class ClientDetailedSchema(ClientSchema):
|
||||
|
||||
@@ -5,7 +5,7 @@ from fastapi import HTTPException
|
||||
from sqlalchemy import select, update
|
||||
from sqlalchemy.orm import joinedload, selectinload, noload
|
||||
|
||||
from models import Client, ClientDetails, User, ResidualPallet, ResidualBox, ResidualProduct, Product
|
||||
from models import Client, ClientDetails, User, ResidualPallet, ResidualBox, ResidualProduct, Product, Card
|
||||
from schemas.client import *
|
||||
from services.auth import AuthService
|
||||
from services.base import BaseService
|
||||
@@ -100,9 +100,14 @@ class ClientService(BaseService):
|
||||
return client
|
||||
|
||||
async def search_clients(self, request: ClientSearchRequest) -> ClientSearchResponse:
|
||||
query = await self.session.scalars(select(Client)
|
||||
.where(Client.name.ilike(f'%{request.name}%'))
|
||||
.options(joinedload(Client.details)))
|
||||
query = await self.session.scalars(
|
||||
select(Client)
|
||||
.where(
|
||||
Client.name.ilike(f'%{request.name}%'),
|
||||
Client.is_deleted == False,
|
||||
)
|
||||
.options(joinedload(Client.details))
|
||||
)
|
||||
clients = []
|
||||
for client in query.all():
|
||||
clients.append(ClientSchema.model_validate(client))
|
||||
@@ -161,7 +166,7 @@ class ClientService(BaseService):
|
||||
client = await self._get_by_id(request.client_id)
|
||||
if not client:
|
||||
return ClientDeleteResponse(ok=False, message='Клиент не найден')
|
||||
await self.session.delete(client)
|
||||
client.is_deleted = True
|
||||
await self.session.commit()
|
||||
return ClientDeleteResponse(ok=True, message='Клиент удален')
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user