45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
from typing import List, Optional
|
|
from app.models.user import User
|
|
from app.schemas.user import UserCreate, UserUpdate
|
|
|
|
fake_users_db = [
|
|
User(id=1, username="admin", email="admin@example.com", full_name="Admin User"),
|
|
User(id=2, username="john", email="john@example.com", full_name="John Doe"),
|
|
User(id=3, username="jane", email="jane@example.com", full_name="Jane Smith"),
|
|
]
|
|
|
|
class UserService:
|
|
@staticmethod
|
|
def get_all_users() -> List[User]:
|
|
return fake_users_db
|
|
|
|
@staticmethod
|
|
def get_user_by_id(user_id: int) -> Optional[User]:
|
|
for user in fake_users_db:
|
|
if user.id == user_id:
|
|
return user
|
|
return None
|
|
|
|
@staticmethod
|
|
def create_user(user_data: UserCreate) -> User:
|
|
new_id = max([u.id for u in fake_users_db]) + 1 if fake_users_db else 1
|
|
new_user = User(
|
|
id=new_id,
|
|
username=user_data.username,
|
|
email=user_data.email,
|
|
full_name=user_data.full_name
|
|
)
|
|
fake_users_db.append(new_user)
|
|
return new_user
|
|
|
|
@staticmethod
|
|
def update_user(user_id: int, user_data: UserUpdate) -> Optional[User]:
|
|
for i, user in enumerate(fake_users_db):
|
|
if user.id == user_id:
|
|
update_data = user_data.model_dump(exclude_unset=True)
|
|
for field, value in update_data.items():
|
|
setattr(user, field, value)
|
|
return user
|
|
return None
|
|
|
|
user_service = UserService() |