feat: вфыв
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user