feat: ud service
This commit is contained in:
		@@ -1,11 +1,12 @@
 | 
			
		||||
from sqlalchemy import select
 | 
			
		||||
from sqlalchemy import select, update
 | 
			
		||||
from sqlalchemy.orm import joinedload
 | 
			
		||||
 | 
			
		||||
from models import Service, ServiceCategory
 | 
			
		||||
from services.base import BaseService
 | 
			
		||||
from schemas.service import ServiceGetAllResponse, ServiceSchema, ServiceGetAllCategoriesResponse, \
 | 
			
		||||
    ServiceCategorySchema, ServiceCreateRequest, ServiceCreateResponse, ServiceCreateCategoryRequest, \
 | 
			
		||||
    ServiceCreateCategoryResponse
 | 
			
		||||
    ServiceCreateCategoryResponse, ServiceUpdateRequest, ServiceUpdateResponse, ServiceDeleteResponse, \
 | 
			
		||||
    ServiceDeleteRequest
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ServiceService(BaseService):
 | 
			
		||||
@@ -33,6 +34,42 @@ class ServiceService(BaseService):
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return ServiceCreateResponse(ok=False, message=f"Неудалось создать услугу, ошибка: {e}")
 | 
			
		||||
 | 
			
		||||
    async def update(self, request: ServiceUpdateRequest) -> ServiceUpdateResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            raw_service = request.data
 | 
			
		||||
            service = await (self.session
 | 
			
		||||
                             .scalars(select(Service)
 | 
			
		||||
                                      .filter(Service.id == raw_service.id)))
 | 
			
		||||
            if not service:
 | 
			
		||||
                return ServiceUpdateResponse(ok=False, message="Услуга не найдена")
 | 
			
		||||
 | 
			
		||||
            service_dict = raw_service.dict()
 | 
			
		||||
            service_dict['category_id'] = raw_service.category.id
 | 
			
		||||
            del service_dict['category']
 | 
			
		||||
            await self.session.execute(
 | 
			
		||||
                update(Service)
 | 
			
		||||
                .where(Service.id == raw_service.id)
 | 
			
		||||
                .values(**service_dict)
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return ServiceUpdateResponse(ok=True, message="Услуга успешно обновлена")
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return ServiceUpdateResponse(ok=False, message=f"Неудалось обновить услугу, ошибка: {e}")
 | 
			
		||||
 | 
			
		||||
    async def delete(self, request: ServiceDeleteRequest) -> ServiceDeleteResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            service = await (self.session
 | 
			
		||||
                             .scalar(select(Service)
 | 
			
		||||
                                     .filter(Service.id == request.service_id)))
 | 
			
		||||
            if not service:
 | 
			
		||||
                return ServiceDeleteResponse(ok=False, message="Услуга не найдена")
 | 
			
		||||
            await self.session.delete(service)
 | 
			
		||||
            await self.session.commit()
 | 
			
		||||
            return ServiceDeleteResponse(ok=True, message="Услуга успешно удалена")
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return ServiceDeleteResponse(ok=False, message=f"Неудалось удалить услугу, ошибка: {e}")
 | 
			
		||||
 | 
			
		||||
    async def create_category(self, request: ServiceCreateCategoryRequest) -> ServiceCreateCategoryResponse:
 | 
			
		||||
        try:
 | 
			
		||||
            raw_category = request.category
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user