crappy
This commit is contained in:
56
services/service.py
Normal file
56
services/service.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import joinedload
|
||||
|
||||
from models import Service, ServiceCategory
|
||||
from services.base import BaseService
|
||||
from schemas.services import ServiceGetAllResponse, ServiceSchema, ServiceGetAllCategoriesResponse, \
|
||||
ServiceCategorySchema, ServiceCreateRequest, ServiceCreateResponse, ServiceCreateCategoryRequest, \
|
||||
ServiceCreateCategoryResponse
|
||||
|
||||
|
||||
class ServiceService(BaseService):
|
||||
async def get_all(self) -> ServiceGetAllResponse:
|
||||
query = await (self.session
|
||||
.scalars(select(Service)
|
||||
.options(joinedload(Service.category))
|
||||
.order_by(Service.category_id, Service.id)))
|
||||
services = []
|
||||
for service in query.all():
|
||||
services.append(ServiceSchema.model_validate(service))
|
||||
return ServiceGetAllResponse(services=services)
|
||||
|
||||
async def create(self, request: ServiceCreateRequest) -> ServiceCreateResponse:
|
||||
try:
|
||||
raw_service = request.service
|
||||
service_dict = raw_service.model_dump()
|
||||
service_dict['category_id'] = raw_service.category.id
|
||||
del service_dict['id']
|
||||
del service_dict['category']
|
||||
service = Service(**service_dict)
|
||||
self.session.add(service)
|
||||
await self.session.commit()
|
||||
return ServiceCreateResponse(ok=True, message="Услуга успешно создана")
|
||||
except Exception as e:
|
||||
return ServiceCreateResponse(ok=False, message=f"Неудалось создать услугу, ошибка: {e}")
|
||||
|
||||
async def create_category(self, request: ServiceCreateCategoryRequest) -> ServiceCreateCategoryResponse:
|
||||
try:
|
||||
raw_category = request.category
|
||||
category_dict = raw_category.model_dump()
|
||||
del category_dict['id']
|
||||
category = ServiceCategory(**category_dict)
|
||||
self.session.add(category)
|
||||
await self.session.commit()
|
||||
return ServiceCreateCategoryResponse(ok=True, message="Категория успешно создана")
|
||||
|
||||
except Exception as e:
|
||||
return ServiceCreateCategoryResponse(ok=False, message=f"Неудалось создать категорию, ошибка: {e}")
|
||||
|
||||
async def get_all_categories(self) -> ServiceGetAllCategoriesResponse:
|
||||
query = await (self.session
|
||||
.scalars(select(ServiceCategory)
|
||||
.order_by(ServiceCategory.id)))
|
||||
categories = []
|
||||
for category in query.all():
|
||||
categories.append(ServiceCategorySchema.model_validate(category))
|
||||
return ServiceGetAllCategoriesResponse(categories=categories)
|
||||
Reference in New Issue
Block a user