feat: вфыв
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
from typing import Union
|
||||
|
||||
from sqlalchemy import select, insert
|
||||
from sqlalchemy import select, insert, delete
|
||||
|
||||
from models import Position
|
||||
from models import Position, user_position
|
||||
from schemas.position import *
|
||||
from services.base import BaseService
|
||||
|
||||
@@ -19,7 +19,6 @@ class PositionService(BaseService):
|
||||
stmt = select(Position).where(Position.key == key)
|
||||
return await self.session.scalar(stmt)
|
||||
|
||||
|
||||
async def create(self, request: CreatePositionRequest) -> CreatePositionResponse:
|
||||
try:
|
||||
if await self.get_by_key(request.data.key):
|
||||
@@ -30,3 +29,30 @@ class PositionService(BaseService):
|
||||
return CreatePositionResponse(ok=True, message='Должность успешно создана')
|
||||
except Exception as e:
|
||||
return CreatePositionResponse(ok=False, message=str(e))
|
||||
|
||||
async def delete(self, request: DeletePositionRequest) -> DeletePositionResponse:
|
||||
try:
|
||||
# Prevent deleting if existing on users
|
||||
stmt = (
|
||||
select(
|
||||
user_position
|
||||
)
|
||||
.where(
|
||||
user_position.c.position_key == request.position_key
|
||||
)
|
||||
)
|
||||
if await self.session.scalar(stmt):
|
||||
return DeletePositionResponse(ok=False, message='Должность привязана к существующим сотрудникам')
|
||||
delete_stmt = (
|
||||
delete(
|
||||
Position
|
||||
)
|
||||
.where(
|
||||
Position.key == request.position_key
|
||||
)
|
||||
)
|
||||
await self.session.execute(delete_stmt)
|
||||
await self.session.commit()
|
||||
return DeletePositionResponse(ok=True, message="Должность успешно удалена!")
|
||||
except Exception as e:
|
||||
return DeletePositionResponse(ok=False, message=str(e))
|
||||
|
||||
Reference in New Issue
Block a user