refactor: crud mixins for repositories and services

This commit is contained in:
2025-09-08 18:00:34 +04:00
parent d73748deab
commit be8052848c
9 changed files with 48 additions and 51 deletions

View File

@ -5,10 +5,7 @@ from services.mixins import *
class BoardService(
ServiceGetAllMixin[Board, BoardSchema],
ServiceCreateMixin[Board, CreateBoardRequest, BoardSchema],
ServiceUpdateMixin[Board, UpdateBoardRequest],
ServiceDeleteMixin[Board],
ServiceCrudMixin[Board, BoardSchema, CreateBoardSchema, UpdateBoardSchema]
):
schema_class = BoardSchema
entity_not_found_msg = "Доска не найдена"

View File

@ -34,8 +34,8 @@ class ServiceCreateMixin(
class ServiceGetAllMixin(
ServiceBaseMixin[RepGetAllMixin],
Generic[EntityType, SchemaType],
ServiceBaseMixin[RepGetAllMixin],
):
schema_class: type[SchemaType]
@ -47,8 +47,8 @@ class ServiceGetAllMixin(
class ServiceUpdateMixin(
ServiceBaseMixin[RepUpdateMixin | RepGetByIdMixin],
Generic[EntityType, UpdateRequestType],
ServiceBaseMixin[RepUpdateMixin | RepGetByIdMixin],
):
entity_not_found_msg = "Entity not found"
entity_updated_msg = "Entity updated"
@ -64,8 +64,8 @@ class ServiceUpdateMixin(
class ServiceDeleteMixin(
ServiceBaseMixin[RepDeleteMixin | RepGetByIdMixin],
Generic[EntityType],
ServiceBaseMixin[RepDeleteMixin | RepGetByIdMixin],
):
entity_not_found_msg = "Entity not found"
entity_deleted_msg = "Entity deleted"
@ -82,3 +82,13 @@ class ServiceDeleteMixin(
await self.repository.delete(entity, is_soft)
return BaseDeleteResponse(message=self.entity_deleted_msg)
class ServiceCrudMixin(
Generic[EntityType, SchemaType, CreateRequestType, UpdateRequestType],
ServiceGetAllMixin[EntityType, SchemaType],
ServiceCreateMixin[EntityType, CreateRequestType, SchemaType],
ServiceUpdateMixin[EntityType, UpdateRequestType],
ServiceDeleteMixin[EntityType],
):
pass

View File

@ -5,10 +5,7 @@ from services.mixins import *
class ProjectService(
ServiceGetAllMixin[Project, ProjectSchema],
ServiceCreateMixin[Project, CreateProjectRequest, ProjectSchema],
ServiceUpdateMixin[Project, UpdateProjectRequest],
ServiceDeleteMixin[Project],
ServiceCrudMixin[Project, ProjectSchema, CreateProjectSchema, UpdateProjectSchema]
):
schema_class = ProjectSchema
entity_not_found_msg = "Проект не найден"

View File

@ -5,10 +5,7 @@ from services.mixins import *
class StatusService(
ServiceGetAllMixin[Status, StatusSchema],
ServiceCreateMixin[Status, CreateStatusRequest, StatusSchema],
ServiceUpdateMixin[Status, UpdateStatusRequest],
ServiceDeleteMixin[Status],
ServiceCrudMixin[Status, StatusSchema, CreateStatusRequest, UpdateStatusRequest]
):
schema_class = StatusSchema
entity_not_found_msg = "Статус не найден"