| from typing import List, Optional
|
| from app.schemas.story import Story, StoryCreate, StoryUpdate
|
| import uuid
|
|
|
|
|
| class StoryService:
|
| def __init__(self):
|
|
|
| self._stories = {}
|
|
|
| def get_stories(self, skip: int = 0, limit: int = 10) -> List[Story]:
|
| stories = list(self._stories.values())
|
| return stories[skip : skip + limit]
|
|
|
| def get_story(self, story_id: str) -> Optional[Story]:
|
| return self._stories.get(story_id)
|
|
|
| def create_story(self, story: StoryCreate) -> Story:
|
| story_id = str(uuid.uuid4())
|
| story_data = Story(
|
| id=story_id,
|
| title=story.title,
|
| description=story.description,
|
| )
|
| self._stories[story_id] = story_data
|
| return story_data
|
|
|
| def update_story(self, story_id: str, story: StoryUpdate) -> Optional[Story]:
|
| if story_id not in self._stories:
|
| return None
|
|
|
| stored_story = self._stories[story_id]
|
| update_data = story.model_dump(exclude_unset=True)
|
|
|
| for field, value in update_data.items():
|
| setattr(stored_story, field, value)
|
|
|
| self._stories[story_id] = stored_story
|
| return stored_story
|
|
|
| def delete_story(self, story_id: str) -> bool:
|
| if story_id not in self._stories:
|
| return False
|
| del self._stories[story_id]
|
| return True
|
|
|
|
|
|
|
| story_service = StoryService()
|
|
|