feat: product search
This commit is contained in:
		@@ -213,7 +213,8 @@ class DealService(BaseService):
 | 
			
		||||
                    total_price=total_price,
 | 
			
		||||
                    rank=rank,
 | 
			
		||||
                    base_marketplace=base_marketplace,
 | 
			
		||||
                    created_at=deal.created_at
 | 
			
		||||
                    created_at=deal.created_at,
 | 
			
		||||
                    shipment_warehouse_id=deal.shipping_warehouse_id
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
        return DealSummaryResponse(summaries=summaries)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,13 @@
 | 
			
		||||
from idlelib.rpc import response_queue
 | 
			
		||||
from typing import Union
 | 
			
		||||
 | 
			
		||||
from sqlalchemy import select
 | 
			
		||||
from sqlalchemy import select, update, delete
 | 
			
		||||
 | 
			
		||||
import models
 | 
			
		||||
from schemas.shipping_warehouse import GetAllShippingWarehousesResponse, ShippingWarehouseSchema
 | 
			
		||||
from models import ShippingWarehouse
 | 
			
		||||
from schemas.shipping_warehouse import GetAllShippingWarehousesResponse, ShippingWarehouseSchema, \
 | 
			
		||||
    CreateShippingWarehouseResponse, CreateShippingWarehouseRequest, UpdateShippingWarehouseRequest, \
 | 
			
		||||
    UpdateShippingWarehouseResponse, DeleteShippingWarehouseRequest, DeleteShippingWarehouseResponse
 | 
			
		||||
from services.base import BaseService
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -13,6 +17,9 @@ class ShippingWarehouseService(BaseService):
 | 
			
		||||
            select(
 | 
			
		||||
                models.ShippingWarehouse
 | 
			
		||||
            )
 | 
			
		||||
            .where(
 | 
			
		||||
                models.ShippingWarehouse.is_deleted == False
 | 
			
		||||
            )
 | 
			
		||||
            .order_by(
 | 
			
		||||
                models.ShippingWarehouse.id
 | 
			
		||||
            )
 | 
			
		||||
@@ -24,7 +31,15 @@ class ShippingWarehouseService(BaseService):
 | 
			
		||||
        return GetAllShippingWarehousesResponse(shipping_warehouses=result)
 | 
			
		||||
 | 
			
		||||
    async def get_by_name(self, name: str) -> Union[models.ShippingWarehouse, None]:
 | 
			
		||||
        stmt = select(models.ShippingWarehouse).where(models.ShippingWarehouse.name == name)
 | 
			
		||||
        stmt = (
 | 
			
		||||
            select(
 | 
			
		||||
                models.ShippingWarehouse
 | 
			
		||||
            )
 | 
			
		||||
            .where(
 | 
			
		||||
                models.ShippingWarehouse.name == name,
 | 
			
		||||
                models.ShippingWarehouse.is_deleted == False
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
        shipping_warehouse = await self.session.scalar(stmt)
 | 
			
		||||
        return shipping_warehouse
 | 
			
		||||
 | 
			
		||||
@@ -35,3 +50,60 @@ class ShippingWarehouseService(BaseService):
 | 
			
		||||
        self.session.add(shipping_warehouse)
 | 
			
		||||
        await self.session.flush()
 | 
			
		||||
        return shipping_warehouse
 | 
			
		||||
 | 
			
		||||
    async def create(self, request: CreateShippingWarehouseRequest) -> CreateShippingWarehouseResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            if await self.get_by_name(request.shipping_warehouse.name):
 | 
			
		||||
                return CreateShippingWarehouseResponse(ok=False,
 | 
			
		||||
                                                       message="Склад отгрузки с таким названием уже существует")
 | 
			
		||||
            await self.create_by_name(request.shipping_warehouse.name)
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return CreateShippingWarehouseResponse(
 | 
			
		||||
                ok=True,
 | 
			
		||||
                message="Склад отгрузки успешно создан"
 | 
			
		||||
            )
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return CreateShippingWarehouseResponse(ok=False,
 | 
			
		||||
                                                   message=str(e))
 | 
			
		||||
 | 
			
		||||
    async def update(self, request: UpdateShippingWarehouseRequest) -> UpdateShippingWarehouseResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            stmt = (
 | 
			
		||||
                update(
 | 
			
		||||
                    ShippingWarehouse
 | 
			
		||||
                )
 | 
			
		||||
                .values(
 | 
			
		||||
                    request.shipping_warehouse.model_dump(
 | 
			
		||||
                        by_alias=False
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
                .where(
 | 
			
		||||
                    ShippingWarehouse.id == request.shipping_warehouse.id
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
            await self.session.execute(
 | 
			
		||||
                stmt
 | 
			
		||||
            )
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return UpdateShippingWarehouseResponse(ok=True, message='Склад отгрузки успешно обновлен')
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return UpdateShippingWarehouseResponse(ok=False, message=str(e))
 | 
			
		||||
 | 
			
		||||
    async def delete(self, request: DeleteShippingWarehouseRequest) -> DeleteShippingWarehouseResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            stmt = (
 | 
			
		||||
                update(
 | 
			
		||||
                    ShippingWarehouse
 | 
			
		||||
                )
 | 
			
		||||
                .values({
 | 
			
		||||
                    'is_deleted': True
 | 
			
		||||
                })
 | 
			
		||||
                .where(
 | 
			
		||||
                    ShippingWarehouse.id == request.shipping_warehouse_id
 | 
			
		||||
                )
 | 
			
		||||
            )
 | 
			
		||||
            await self.session.execute(stmt)
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return DeleteShippingWarehouseResponse(ok=True, message='Склад отгрузки успешно удален')
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return DeleteShippingWarehouseResponse(ok=False, message=str(e))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user