fixes
This commit is contained in:
@@ -100,29 +100,40 @@ class GenerationService:
|
||||
return await asyncio.to_thread(self.gemini.generate_text, prompt=technical_prompt, images_list=images)
|
||||
|
||||
async def get_generations(self, **kwargs) -> GenerationsResponse:
|
||||
current_user_id = kwargs.pop('current_user_id', None)
|
||||
generations = await self.dao.generations.get_generations(**kwargs)
|
||||
total_count = await self.dao.generations.count_generations(
|
||||
character_id=kwargs.get('character_id'),
|
||||
created_by=kwargs.get('created_by'),
|
||||
project_id=kwargs.get('project_id'),
|
||||
idea_id=kwargs.get('idea_id')
|
||||
idea_id=kwargs.get('idea_id'),
|
||||
only_liked_by=kwargs.get('only_liked_by')
|
||||
)
|
||||
return GenerationsResponse(
|
||||
generations=[GenerationResponse(**gen.model_dump()) for gen in generations],
|
||||
generations=[self._map_to_response(gen, current_user_id) for gen in generations],
|
||||
total_count=total_count
|
||||
)
|
||||
|
||||
async def get_generation(self, generation_id: str) -> Optional[GenerationResponse]:
|
||||
async def get_generation(self, generation_id: str, current_user_id: Optional[str] = None) -> Optional[GenerationResponse]:
|
||||
gen = await self.dao.generations.get_generation(generation_id)
|
||||
return GenerationResponse(**gen.model_dump()) if gen else None
|
||||
return self._map_to_response(gen, current_user_id) if gen else None
|
||||
|
||||
async def get_generations_by_group(self, group_id: str) -> GenerationGroupResponse:
|
||||
async def toggle_like(self, generation_id: str, user_id: str) -> bool | None:
|
||||
return await self.dao.generations.toggle_like(generation_id, user_id)
|
||||
|
||||
async def get_generations_by_group(self, group_id: str, current_user_id: Optional[str] = None) -> GenerationGroupResponse:
|
||||
generations = await self.dao.generations.get_generations_by_group(group_id)
|
||||
return GenerationGroupResponse(
|
||||
generation_group_id=group_id,
|
||||
generations=[GenerationResponse(**gen.model_dump()) for gen in generations]
|
||||
generations=[self._map_to_response(gen, current_user_id) for gen in generations]
|
||||
)
|
||||
|
||||
def _map_to_response(self, gen: Generation, current_user_id: Optional[str] = None) -> GenerationResponse:
|
||||
res = GenerationResponse(**gen.model_dump())
|
||||
res.likes_count = len(gen.liked_by) if gen.liked_by else 0
|
||||
res.is_liked = current_user_id in gen.liked_by if current_user_id and gen.liked_by else False
|
||||
return res
|
||||
|
||||
async def get_running_generations(self, user_id: Optional[str] = None, project_id: Optional[str] = None) -> List[Generation]:
|
||||
return await self.dao.generations.get_generations(status=GenerationStatus.RUNNING, created_by=user_id, project_id=project_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user