from typing import List, Optional from sqlalchemy.orm import Session from app.core.entities.user import UserEntity from app.infrastructure.database.models.users import User from app.infrastructure.database.repository.user_repository import UserRepository class UserService: def __init__(self, db: Session): self.repository = UserRepository(db) def get_all_users(self) -> List[UserEntity]: users = self.repository.get_all() return [ UserEntity( user.id, user.first_name, user.last_name, user.login, user.password, user.role_id ) for user in users ] def get_user_by_id(self, user_id: int) -> Optional[UserEntity]: user = self.repository.get_by_id(user_id) if user: return UserEntity( user.id, user.first_name, user.last_name, user.login, user.password, user.role_id ) return None def get_user_by_login(self, login: str) -> Optional[UserEntity]: user = self.repository.get_by_login(login) if user: return UserEntity( user.id, user.first_name, user.last_name, user.login, user.password, user.role_id ) return None def create_user(self, entity: UserEntity) -> UserEntity: user_model = User( first_name=entity.first_name, last_name=entity.last_name, login=entity.login, password=entity.password, role_id=entity.role_id ) created_user = self.repository.create(user_model) return UserEntity( created_user.id, created_user.first_name, created_user.last_name, created_user.login, created_user.password, created_user.role_id ) def update_user(self, user_id: int, entity: UserEntity) -> Optional[UserEntity]: user_model = self.repository.get_by_id(user_id) if user_model: user_model.first_name = entity.first_name user_model.last_name = entity.last_name user_model.login = entity.login user_model.password = entity.password user_model.role_id = entity.role_id self.repository.update(user_model) return UserEntity( user_model.id, user_model.first_name, user_model.last_name, user_model.login, user_model.password, user_model.role_id ) return None def delete_user(self, user_id: int) -> bool: return self.repository.delete(user_id) is not None