feat: create user
This commit is contained in:
@@ -19,6 +19,32 @@ class UserService(BaseService):
|
||||
async def get_by_id(self, user_id: int) -> Optional[User]:
|
||||
return await self.session.scalar(select(User).where(User.id == user_id))
|
||||
|
||||
async def create(self, request: CreateUserRequest) -> CreateUserResponse:
|
||||
try:
|
||||
base_fields = request.data.model_dump_parent()
|
||||
del base_fields['pay_rate']
|
||||
user = User(**base_fields)
|
||||
self.session.add(user)
|
||||
await self.session.flush()
|
||||
|
||||
if request.data.position_key:
|
||||
stmt = insert(user_position).values(**{
|
||||
'user_id': user.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': user.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:
|
||||
return CreateUserResponse(ok=False, message=str(e))
|
||||
|
||||
async def update(self, request: UpdateUserRequest) -> UpdateUserResponse:
|
||||
try:
|
||||
if not await self.get_by_id(request.data.id):
|
||||
|
||||
Reference in New Issue
Block a user