Plumb collection manager into librarian

This commit is contained in:
Cyber MacGeddon 2025-09-19 11:03:10 +01:00
parent fca219bc30
commit 70876550dd

View file

@ -127,7 +127,7 @@ class CollectionManager:
async def update_collection(self, request: CollectionManagementRequest) -> CollectionManagementResponse: async def update_collection(self, request: CollectionManagementRequest) -> CollectionManagementResponse:
""" """
Update collection metadata Update collection metadata (creates if doesn't exist)
Args: Args:
request: Collection management request request: Collection management request
@ -136,24 +136,55 @@ class CollectionManager:
CollectionManagementResponse with updated collection CollectionManagementResponse with updated collection
""" """
try: try:
# Extract fields for update # Check if collection exists, create if it doesn't
name = request.name if request.name else None existing = await self.table_store.get_collection(request.user, request.collection)
description = request.description if request.description else None if not existing:
tags = list(request.tags) if request.tags else None # Create new collection with provided metadata
logger.info(f"Creating new collection {request.user}/{request.collection}")
updated_collection = await self.table_store.update_collection( name = request.name if request.name else request.collection
request.user, request.collection, name, description, tags description = request.description if request.description else ""
) tags = set(request.tags) if request.tags else set()
collection_metadata = CollectionMetadata( await self.table_store.create_collection(
user=updated_collection["user"], user=request.user,
collection=updated_collection["collection"], collection=request.collection,
name=updated_collection["name"], name=name,
description=updated_collection["description"], description=description,
tags=updated_collection["tags"], tags=tags
created_at="", # Not returned by update )
updated_at=updated_collection["updated_at"]
) # Get the newly created collection for response
created_collection = await self.table_store.get_collection(request.user, request.collection)
collection_metadata = CollectionMetadata(
user=created_collection["user"],
collection=created_collection["collection"],
name=created_collection["name"],
description=created_collection["description"],
tags=created_collection["tags"],
created_at=created_collection["created_at"],
updated_at=created_collection["updated_at"]
)
else:
# Collection exists, update it
name = request.name if request.name else None
description = request.description if request.description else None
tags = list(request.tags) if request.tags else None
updated_collection = await self.table_store.update_collection(
request.user, request.collection, name, description, tags
)
collection_metadata = CollectionMetadata(
user=updated_collection["user"],
collection=updated_collection["collection"],
name=updated_collection["name"],
description=updated_collection["description"],
tags=updated_collection["tags"],
created_at="", # Not returned by update
updated_at=updated_collection["updated_at"]
)
return CollectionManagementResponse( return CollectionManagementResponse(
success="true", success="true",