fastapi-demo/app/services/user_service.py

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()