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