From 35c7a4ffcbafe001418d7f73d99bdcffc8e06bed Mon Sep 17 00:00:00 2001 From: naglepuff Date: Tue, 1 Oct 2024 17:33:04 -0400 Subject: [PATCH 1/2] Update public-facing API routes for data generation --- nmdc_server/api.py | 39 ++++++++++++++++++++++----------------- web/src/data/api.ts | 10 ++++++---- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/nmdc_server/api.py b/nmdc_server/api.py index 26437194..fbece825 100644 --- a/nmdc_server/api.py +++ b/nmdc_server/api.py @@ -411,13 +411,18 @@ async def get_study_image(study_id: str, db: Session = Depends(get_db)): return StreamingResponse(BytesIO(image), media_type="image/jpeg") -# omics_processing +# data_generation +# Note the intermingling of the terms "data generation" and "omics processing." +# The Berkeley schema (NMDC schema v11) did away with the phrase "omics processing." +# As a result, public-facing uses of "omics processing" should be replaced with +# "data generation." +# Future work should go in to a more thorough conversion of omics process to data generation. @router.post( - "/omics_processing/search", + "/data_generation/search", response_model=query.OmicsProcessingSearchResponse, - tags=["omics_processing"], - name="Search for omics processings", - description="Faceted search of omics_processing data.", + tags=["data_generation"], + name="Search for data generations", + description="Faceted search of data_generation data.", ) async def search_omics_processing( query: query.SearchQuery = query.SearchQuery(), @@ -428,9 +433,9 @@ async def search_omics_processing( @router.post( - "/omics_processing/facet", + "/data_generation/facet", response_model=query.FacetResponse, - tags=["omics_processing"], + tags=["data_generation"], name="Get all values of an attribute", ) async def facet_omics_processing(query: query.FacetQuery, db: Session = Depends(get_db)): @@ -438,9 +443,9 @@ async def facet_omics_processing(query: query.FacetQuery, db: Session = Depends( @router.post( - "/omics_processing/binned_facet", + "/data_generation/binned_facet", response_model=query.BinnedFacetResponse, - tags=["omics_processing"], + tags=["data_generation"], name="Get all values of a non-string attribute with binning", ) async def binned_facet_omics_processing( @@ -450,26 +455,26 @@ async def binned_facet_omics_processing( @router.get( - "/omics_processing/{omics_processing_id}", + "/data_generation/{data_generation_id}", response_model=schemas.OmicsProcessing, - tags=["omics_processing"], + tags=["data_generation"], ) -async def get_omics_processing(omics_processing_id: str, db: Session = Depends(get_db)): - db_omics_processing = crud.get_omics_processing(db, omics_processing_id) +async def get_omics_processing(data_generation_id: str, db: Session = Depends(get_db)): + db_omics_processing = crud.get_omics_processing(db, data_generation_id) if db_omics_processing is None: raise HTTPException(status_code=404, detail="OmicsProcessing not found") return db_omics_processing @router.get( - "/omics_processing/{omics_processing_id}/outputs", + "/data_generation/{data_generation_id}/outputs", response_model=List[schemas.DataObject], - tags=["omics_processing"], + tags=["data_generation"], ) async def list_omics_processing_data_objects( - omics_processing_id: str, db: Session = Depends(get_db) + data_generation_id: str, db: Session = Depends(get_db) ): - return crud.list_omics_processing_data_objects(db, omics_processing_id).all() + return crud.list_omics_processing_data_objects(db, data_generation_id).all() # data object diff --git a/web/src/data/api.ts b/web/src/data/api.ts index b8a5c5e6..56050e45 100644 --- a/web/src/data/api.ts +++ b/web/src/data/api.ts @@ -402,7 +402,7 @@ async function searchStudy(params: SearchParams) { } async function searchOmicsProcessing(params: SearchParams) { - return _search('omics_processing', params); + return _search('data_generation', params); } async function searchReadsQC(params: SearchParams) { @@ -483,7 +483,7 @@ async function getFacetSummary( field: string, conditions: Condition[], ): Promise { - const path = type; + const path = type === 'omics_processing' ? 'data_generation' : type; const { data } = await client.post<{ facets: Record }>(`${path}/facet`, { conditions, attribute: field, }); @@ -504,7 +504,8 @@ async function getBinnedFacet( numBins: number, resolution: 'day' | 'week' | 'month' | 'year' = 'month', ) { - const { data } = await client.post>(`${table}/binned_facet`, { + const path = table === 'omics_processing' ? 'data_generation' : table; + const { data } = await client.post>(`${path}/binned_facet`, { attribute, conditions, resolution, @@ -588,7 +589,8 @@ async function getDataObjectList( 'metaproteomic_analysis', ]; if (supportedTypes.indexOf(type) >= 0) { - const { data } = await client.get(`${type}/${parentId}/outputs`); + const path = type === 'omics_processing' ? 'data_generation' : type; + const { data } = await client.get(`${path}/${parentId}/outputs`); return data; } return []; From 542e3bbd6f163264b0a6cc2d81fa7ad0a81b522f Mon Sep 17 00:00:00 2001 From: naglepuff Date: Wed, 2 Oct 2024 13:41:48 -0400 Subject: [PATCH 2/2] Update test withe new endpoint name --- tests/test_app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_app.py b/tests/test_app.py index eb9a6673..69d886d0 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -153,7 +153,7 @@ def test_get_environmental_aggregation(db: Session, client: TestClient): @pytest.mark.parametrize( "endpoint", [ - "omics_processing", + "data_generation", ], ) def test_list_data_objects(db: Session, client: TestClient, endpoint: str):