[docs]@api_version(database_version)@router.post("/projects",response_model=ProjectResponse,summary="Create a new project")defcreate(project_data:ProjectCreate,service:ProjectService=Depends(get_service))->ProjectResponse:"""Method to create a new project vertex Creates vertex with the label "project" and the properties of project_data Args: project_data (ProjectCreate): contains all properties for the project Returns ProjectResponse: Created Project with the project_data as ProjectCreate """returnservice.create(project_data)
[docs]@api_version(database_version)@router.get("/projects",response_model=list[ProjectResponse],summary="Read all projects")defread_projects_all(service:ProjectService=Depends(get_service),)->list[ProjectResponse]:"""Reads all project vertices Args: None Returns List[ProjectResponse]: List of Projects in the database """returnservice.read_projects_all()
[docs]@api_version(database_version)@router.get("/projects/{project_uuid}",response_model=ProjectResponse,summary="Read a project")defread(project_uuid:str,service:ProjectService=Depends(get_service))->ProjectResponse:"""Method to read one project based on the id Args: project_uuid (str): id of the vertex with the label "project"' Returns ProjectResponse: Project with all properties """returnservice.read(project_uuid)
[docs]@api_version(database_version)@router.get("/projects/{project_uuid}/export",response_model=dict,summary="Export a project")defexport_project(project_uuid:str,service:ProjectService=Depends(get_service))->dict:"""Method to export one project based on the id in JSON format Args project_uuid (str): id of the vertex with the label "project"' Returns json_dict: JSON dictionary containing the project data """returnservice.export_project(project_uuid)
[docs]@api_version(database_version)@router.post("/projects/import",response_model=None,summary="Import a project")defimport_project(project_json:dict,service:ProjectService=Depends(get_service))->None:"""Method to import a project in JSON format Args: project_json (dict): JSON dictionary with the project data Returns None """returnservice.import_project(project_json)
[docs]@api_version(database_version)@router.patch("/projects/{project_uuid}",response_model=ProjectResponse,summary="Update a project",)defupdate(project_uuid:str,modified_fields:ProjectUpdate,service:ProjectService=Depends(get_service),)->ProjectResponse:"""Updates the specified project based on the id with the new project_data Args: project_uuid (str): id of the project vertex modified_fields (ProjectUpdate): contains properties of the project Returns ProjectResponse: Project with the project_data as ProjectUpdate """returnservice.update(project_uuid,modified_fields)
[docs]@api_version(database_version)@router.delete("/projects/{project_uuid}",response_model=None,summary="Delete a project")defdelete(project_uuid:str,service:ProjectService=Depends(get_service))->None:"""Gets all vertices connected (via edge with label "contains") to the project vertex with the id = project_uuid Deletes all edges from these vertices and deletes afterwards all vertices connected to the project Deletes the project vertex based on the id Args project_uuid (str): id of the project vertex Returns None """returnservice.delete(project_uuid)