namespace id

This commit is contained in:
Robert 2024-03-13 03:01:13 +07:00
parent 5ae12ea3ca
commit 040dacf2f5
No known key found for this signature in database
GPG Key ID: F631C7FD957D5F22
4 changed files with 18 additions and 1 deletions

View File

@ -4,6 +4,9 @@ from fastapi import APIRouter, HTTPException
from chain_service.database.models.chain import Chain from chain_service.database.models.chain import Chain
from chain_service.dependencies.chain_repository import ChainRepositoryDependency from chain_service.dependencies.chain_repository import ChainRepositoryDependency
from chain_service.dependencies.namespace_repository import (
NamespaceRepositoryDependency,
)
from chain_service.dependencies.file_uploader_service import ( from chain_service.dependencies.file_uploader_service import (
FileUploaderServiceDependency, FileUploaderServiceDependency,
) )
@ -15,13 +18,19 @@ router = APIRouter(prefix="/chain")
async def chain_upsert_controller( async def chain_upsert_controller(
chain: Chain, chain: Chain,
chain_repository: ChainRepositoryDependency, chain_repository: ChainRepositoryDependency,
namespace_repository: NamespaceRepositoryDependency,
file_uploader_service: FileUploaderServiceDependency, file_uploader_service: FileUploaderServiceDependency,
): ):
try: try:
assert await namespace_repository.get_by_id(namespace_id=chain.namespace_id)
upserted_chain = await chain_repository.upsert(chain) upserted_chain = await chain_repository.upsert(chain)
await file_uploader_service.upload_from_chain(upserted_chain) await file_uploader_service.upload_from_chain(upserted_chain)
return upserted_chain return upserted_chain
except AssertionError:
logger.exception(f"Unknown namespace_id {chain.namespace_id}")
return HTTPException(status_code=400, detail="Wrong namespace_id")
except Exception: except Exception:
logger.exception(f"Error during chain upsert {chain.model_dump_json()}") logger.exception(f"Error during chain upsert {chain.model_dump_json()}")
return HTTPException(status_code=500, detail="Error during chain upsert") return HTTPException(status_code=500, detail="Error during chain upsert")

View File

@ -32,6 +32,7 @@ async def run_chain_controller(
progress_chain = ProgressChain.create_from_chain( progress_chain = ProgressChain.create_from_chain(
chain=chain, chain=chain,
task_id=run_chain_input.task_id, task_id=run_chain_input.task_id,
namespace_id=chain.namespace_id,
recipients=run_chain_input.recipients, recipients=run_chain_input.recipients,
) )

View File

@ -27,6 +27,7 @@ Action = Annotated[Union[WaitAction, CommentAction], Field(description="action_t
class Chain(BaseMongoModel): class Chain(BaseMongoModel):
namespace_id: str
name: Annotated[Optional[str], Field(default=None)] name: Annotated[Optional[str], Field(default=None)]
actions: Annotated[Optional[List[Action]], Field(default=[])] actions: Annotated[Optional[List[Action]], Field(default=[])]
last_modified: Annotated[datetime, Field(default_factory=datetime.utcnow)] last_modified: Annotated[datetime, Field(default_factory=datetime.utcnow)]

View File

@ -50,6 +50,7 @@ Action = Annotated[
class ProgressChain(BaseMongoModel): class ProgressChain(BaseMongoModel):
task_id: int task_id: int
namespace_id: str
recipients: Annotated[Optional[List[int]], Field(default=[])] recipients: Annotated[Optional[List[int]], Field(default=[])]
name: Annotated[Optional[str], Field(default=None)] name: Annotated[Optional[str], Field(default=None)]
actions: Annotated[Optional[List[Action]], Field(default=[])] actions: Annotated[Optional[List[Action]], Field(default=[])]
@ -57,10 +58,15 @@ class ProgressChain(BaseMongoModel):
@classmethod @classmethod
def create_from_chain( def create_from_chain(
cls, chain: Chain, task_id: int, recipients: Optional[List[int]] = [] cls,
chain: Chain,
task_id: int,
namespace_id: str,
recipients: Optional[List[int]] = [],
): ):
return ProgressChain( return ProgressChain(
task_id=task_id, task_id=task_id,
namespace_id=namespace_id,
recipients=recipients, recipients=recipients,
name=chain.name, name=chain.name,
actions=map(Chain.model_dump, chain.actions), actions=map(Chain.model_dump, chain.actions),