feat: вфыв

This commit is contained in:
2024-07-22 12:45:21 +03:00
parent 7c10d8777e
commit 82c9126d87
19 changed files with 725 additions and 18 deletions

View File

@@ -1,6 +1,6 @@
from sqlalchemy import select, update, delete, insert
from models import User, user_position
from models import User, user_position, user_pay_rate
from services.base import BaseService
from schemas.user import *
@@ -21,28 +21,38 @@ class UserService(BaseService):
async def update(self, request: UpdateUserRequest) -> UpdateUserResponse:
try:
if not self.get_by_id(request.data.id):
if not await self.get_by_id(request.data.id):
return UpdateUserResponse(ok=False, message='Указанный пользователь не найден')
base_fields = request.data.model_dump_parent()
del base_fields['pay_rate']
stmt = update(User).values(**base_fields).where(User.id == request.data.id)
print(stmt)
await self.session.execute(stmt)
await self.session.flush()
# Updating position
# Deleting previous position
stmt = delete(user_position).where(user_position.c.user_id == request.data.id)
await self.session.execute(stmt)
await self.session.flush()
if not request.data.position_key:
await self.session.commit()
return UpdateUserResponse(ok=True, message='Пользователь успешно обновлен')
stmt = insert(user_position).values(**{
'user_id': request.data.id,
'position_key': request.data.position_key
})
# Deleting previous pay rate
stmt = delete(user_pay_rate).where(user_pay_rate.c.user_id == request.data.id)
await self.session.execute(stmt)
await self.session.flush()
if request.data.position_key:
stmt = insert(user_position).values(**{
'user_id': request.data.id,
'position_key': request.data.position_key
})
await self.session.execute(stmt)
if request.data.pay_rate:
stmt = insert(user_pay_rate).values(**{
'user_id': request.data.id,
'pay_rate_id': request.data.pay_rate.id
})
await self.session.execute(stmt)
await self.session.commit()
return UpdateUserResponse(ok=True, message='Пользователь успешно обновлен')
except Exception as e:
pass
return UpdateUserResponse(ok=False, message=str(e))