feat: вфыв

This commit is contained in:
2024-07-21 10:56:59 +03:00
parent 6b09251141
commit 7c10d8777e
26 changed files with 497 additions and 43 deletions

View File

@@ -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))