feat: Add album management functionality with new data model, repository, service, API, and generation integration.
This commit is contained in:
@@ -40,7 +40,7 @@ class GenerationRepo:
|
||||
generations.append(Generation(**generation))
|
||||
return generations
|
||||
|
||||
async def count_generations(self, character_id: Optional[str] = None, status: Optional[GenerationStatus] = None) -> int:
|
||||
async def count_generations(self, character_id: Optional[str] = None, status: Optional[GenerationStatus] = None, album_id: Optional[str] = None) -> int:
|
||||
args = {}
|
||||
if character_id is not None:
|
||||
args["linked_character_id"] = character_id
|
||||
@@ -48,5 +48,21 @@ class GenerationRepo:
|
||||
args["status"] = status
|
||||
return await self.collection.count_documents(args)
|
||||
|
||||
async def get_generations_by_ids(self, generation_ids: List[str]) -> List[Generation]:
|
||||
object_ids = [ObjectId(gen_id) for gen_id in generation_ids if ObjectId.is_valid(gen_id)]
|
||||
res = await self.collection.find({"_id": {"$in": object_ids}}).to_list(None)
|
||||
generations: List[Generation] = []
|
||||
|
||||
# Maintain order of generation_ids
|
||||
gen_map = {str(doc["_id"]): doc for doc in res}
|
||||
|
||||
for gen_id in generation_ids:
|
||||
doc = gen_map.get(gen_id)
|
||||
if doc:
|
||||
doc["id"] = str(doc.pop("_id"))
|
||||
generations.append(Generation(**doc))
|
||||
|
||||
return generations
|
||||
|
||||
async def update_generation(self, generation: Generation, ):
|
||||
res = await self.collection.update_one({"_id": ObjectId(generation.id)}, {"$set": generation.model_dump()})
|
||||
|
||||
Reference in New Issue
Block a user