more methods

This commit is contained in:
Robert 2024-03-13 03:01:26 +07:00
parent 040dacf2f5
commit 5473be3675
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22
2 changed files with 34 additions and 0 deletions

View File

@ -21,3 +21,20 @@ async def namespace_controller(
except Exception: except Exception:
logger.exception(f"Error during namespace upsert {namespace.model_dump_json()}") logger.exception(f"Error during namespace upsert {namespace.model_dump_json()}")
return HTTPException(status_code=500, detail="Error during namespace upsert") return HTTPException(status_code=500, detail="Error during namespace upsert")
# @router.get("/{namespace_name}")
async def namespace_get_by_name_controller(
namespace_name: str, namespace_repository: NamespaceRepositoryDependency
):
try:
assert (namespace := await namespace_repository.get_by_name(namespace_name))
return namespace
except AssertionError:
logger.warning(f"Namespace not found {namespace_name}")
return HTTPException(status_code=404, detail="Namespace not found")
except Exception:
logger.exception("Error during chain get")
return HTTPException(status_code=500, detail="Error during namespace get")

View File

@ -1,6 +1,9 @@
from chain_service.database.database import Database from chain_service.database.database import Database
from chain_service.database.models.namespace import Namespace from chain_service.database.models.namespace import Namespace
from uuid import UUID
from loguru import logger
class NamespaceRepository: class NamespaceRepository:
@ -12,3 +15,17 @@ class NamespaceRepository:
payload = namespace.model_dump(by_alias=True) payload = namespace.model_dump(by_alias=True)
await self.collection.replace_one(query, payload, upsert=True) await self.collection.replace_one(query, payload, upsert=True)
return namespace return namespace
async def get_by_id(self, namespace_id: str) -> Namespace | None:
try:
query = {"_id": UUID(namespace_id)}
namespace = await self.collection.find_one(query)
return Namespace.model_validate(namespace) if namespace else None
except ValueError:
logger.error(f"Cannot convert {namespace_id} to UUID")
async def get_by_name(self, name: str) -> Namespace | None:
query = {"name": name}
namespace = await self.collection.find_one(query)
return Namespace.model_validate(namespace) if namespace else None