Skip to content

Commit 9a02d70

Browse files
authored
On Study View handle larger number of resource files (#5034)
Fixes cBioPortal/cbioportal#11004 (associated backend PR is merged, see cBioPortal/cbioportal#11051). This PR modifies the FilesAndLinks table on the Study View to use the new resource-data-all endpoint, which reduces the number of API requests and enables showing thousands of resource files without performance degradation
1 parent 813db5d commit 9a02d70

File tree

7 files changed

+343
-28
lines changed

7 files changed

+343
-28
lines changed

packages/cbioportal-ts-api-client/src/generated/CBioPortalAPIInternal-docs.json

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2831,6 +2831,103 @@
28312831
"operationId": "getAllStudyResourceDataInStudyUsingGET"
28322832
}
28332833
},
2834+
"/api/studies/{studyId}/resource-data-all": {
2835+
"get": {
2836+
"produces": [
2837+
"application/json"
2838+
],
2839+
"parameters": [
2840+
{
2841+
"description": "Study ID e.g. acc_tcga",
2842+
"in": "path",
2843+
"name": "studyId",
2844+
"required": true,
2845+
"type": "string"
2846+
},
2847+
{
2848+
"description": "Resource ID",
2849+
"in": "query",
2850+
"name": "resourceId",
2851+
"required": false,
2852+
"type": "string"
2853+
},
2854+
{
2855+
"default": "SUMMARY",
2856+
"description": "Level of detail of the response",
2857+
"enum": [
2858+
"ID",
2859+
"SUMMARY",
2860+
"DETAILED",
2861+
"META"
2862+
],
2863+
"in": "query",
2864+
"name": "projection",
2865+
"required": false,
2866+
"type": "string"
2867+
},
2868+
{
2869+
"default": 10000000,
2870+
"description": "Page size of the result list",
2871+
"format": "int32",
2872+
"in": "query",
2873+
"maximum": 10000000,
2874+
"minimum": 1,
2875+
"name": "pageSize",
2876+
"required": false,
2877+
"type": "integer"
2878+
},
2879+
{
2880+
"default": 0,
2881+
"description": "Page number of the result list",
2882+
"format": "int32",
2883+
"in": "query",
2884+
"minimum": 0,
2885+
"name": "pageNumber",
2886+
"required": false,
2887+
"type": "integer"
2888+
},
2889+
{
2890+
"description": "Name of the property that the result list is sorted by",
2891+
"enum": [
2892+
"ResourceId",
2893+
"url"
2894+
],
2895+
"in": "query",
2896+
"name": "sortBy",
2897+
"required": false,
2898+
"type": "string"
2899+
},
2900+
{
2901+
"default": "ASC",
2902+
"description": "Direction of the sort",
2903+
"enum": [
2904+
"ASC",
2905+
"DESC"
2906+
],
2907+
"in": "query",
2908+
"name": "direction",
2909+
"required": false,
2910+
"type": "string"
2911+
}
2912+
],
2913+
"responses": {
2914+
"200": {
2915+
"description": "OK",
2916+
"schema": {
2917+
"items": {
2918+
"$ref": "#/definitions/ResourceData"
2919+
},
2920+
"type": "array"
2921+
}
2922+
}
2923+
},
2924+
"tags": [
2925+
"Resource Data"
2926+
],
2927+
"description": "Get all resource data for for all patients and all samples within a study",
2928+
"operationId": "getAllStudyResourceDataInStudyPatientSampleUsingGET"
2929+
}
2930+
},
28342931
"/api/studies/{studyId}/resource-definitions": {
28352932
"get": {
28362933
"produces": [

packages/cbioportal-ts-api-client/src/generated/CBioPortalAPIInternal.ts

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6746,6 +6746,159 @@ export default class CBioPortalAPIInternal {
67466746
return response.body;
67476747
});
67486748
};
6749+
getAllStudyResourceDataInStudyPatientSampleUsingGETURL(parameters: {
6750+
'studyId': string,
6751+
'resourceId' ? : string,
6752+
'projection' ? : "ID" | "SUMMARY" | "DETAILED" | "META",
6753+
'pageSize' ? : number,
6754+
'pageNumber' ? : number,
6755+
'sortBy' ? : "ResourceId" | "url",
6756+
'direction' ? : "ASC" | "DESC",
6757+
$queryParameters ? : any
6758+
}): string {
6759+
let queryParameters: any = {};
6760+
let path = '/api/studies/{studyId}/resource-data-all';
6761+
6762+
path = path.replace('{studyId}', parameters['studyId'] + '');
6763+
if (parameters['resourceId'] !== undefined) {
6764+
queryParameters['resourceId'] = parameters['resourceId'];
6765+
}
6766+
6767+
if (parameters['projection'] !== undefined) {
6768+
queryParameters['projection'] = parameters['projection'];
6769+
}
6770+
6771+
if (parameters['pageSize'] !== undefined) {
6772+
queryParameters['pageSize'] = parameters['pageSize'];
6773+
}
6774+
6775+
if (parameters['pageNumber'] !== undefined) {
6776+
queryParameters['pageNumber'] = parameters['pageNumber'];
6777+
}
6778+
6779+
if (parameters['sortBy'] !== undefined) {
6780+
queryParameters['sortBy'] = parameters['sortBy'];
6781+
}
6782+
6783+
if (parameters['direction'] !== undefined) {
6784+
queryParameters['direction'] = parameters['direction'];
6785+
}
6786+
6787+
if (parameters.$queryParameters) {
6788+
Object.keys(parameters.$queryParameters).forEach(function(parameterName) {
6789+
var parameter = parameters.$queryParameters[parameterName];
6790+
queryParameters[parameterName] = parameter;
6791+
});
6792+
}
6793+
let keys = Object.keys(queryParameters);
6794+
return this.domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '');
6795+
};
6796+
6797+
/**
6798+
* Get all resource data for for all patients and all samples within a study
6799+
* @method
6800+
* @name CBioPortalAPIInternal#getAllStudyResourceDataInStudyPatientSampleUsingGET
6801+
* @param {string} studyId - Study ID e.g. acc_tcga
6802+
* @param {string} resourceId - Resource ID
6803+
* @param {string} projection - Level of detail of the response
6804+
* @param {integer} pageSize - Page size of the result list
6805+
* @param {integer} pageNumber - Page number of the result list
6806+
* @param {string} sortBy - Name of the property that the result list is sorted by
6807+
* @param {string} direction - Direction of the sort
6808+
*/
6809+
getAllStudyResourceDataInStudyPatientSampleUsingGETWithHttpInfo(parameters: {
6810+
'studyId': string,
6811+
'resourceId' ? : string,
6812+
'projection' ? : "ID" | "SUMMARY" | "DETAILED" | "META",
6813+
'pageSize' ? : number,
6814+
'pageNumber' ? : number,
6815+
'sortBy' ? : "ResourceId" | "url",
6816+
'direction' ? : "ASC" | "DESC",
6817+
$queryParameters ? : any,
6818+
$domain ? : string
6819+
}): Promise < request.Response > {
6820+
const domain = parameters.$domain ? parameters.$domain : this.domain;
6821+
const errorHandlers = this.errorHandlers;
6822+
const request = this.request;
6823+
let path = '/api/studies/{studyId}/resource-data-all';
6824+
let body: any;
6825+
let queryParameters: any = {};
6826+
let headers: any = {};
6827+
let form: any = {};
6828+
return new Promise(function(resolve, reject) {
6829+
headers['Accept'] = 'application/json';
6830+
6831+
path = path.replace('{studyId}', parameters['studyId'] + '');
6832+
6833+
if (parameters['studyId'] === undefined) {
6834+
reject(new Error('Missing required parameter: studyId'));
6835+
return;
6836+
}
6837+
6838+
if (parameters['resourceId'] !== undefined) {
6839+
queryParameters['resourceId'] = parameters['resourceId'];
6840+
}
6841+
6842+
if (parameters['projection'] !== undefined) {
6843+
queryParameters['projection'] = parameters['projection'];
6844+
}
6845+
6846+
if (parameters['pageSize'] !== undefined) {
6847+
queryParameters['pageSize'] = parameters['pageSize'];
6848+
}
6849+
6850+
if (parameters['pageNumber'] !== undefined) {
6851+
queryParameters['pageNumber'] = parameters['pageNumber'];
6852+
}
6853+
6854+
if (parameters['sortBy'] !== undefined) {
6855+
queryParameters['sortBy'] = parameters['sortBy'];
6856+
}
6857+
6858+
if (parameters['direction'] !== undefined) {
6859+
queryParameters['direction'] = parameters['direction'];
6860+
}
6861+
6862+
if (parameters.$queryParameters) {
6863+
Object.keys(parameters.$queryParameters).forEach(function(parameterName) {
6864+
var parameter = parameters.$queryParameters[parameterName];
6865+
queryParameters[parameterName] = parameter;
6866+
});
6867+
}
6868+
6869+
request('GET', domain + path, body, headers, queryParameters, form, reject, resolve, errorHandlers);
6870+
6871+
});
6872+
};
6873+
6874+
/**
6875+
* Get all resource data for for all patients and all samples within a study
6876+
* @method
6877+
* @name CBioPortalAPIInternal#getAllStudyResourceDataInStudyPatientSampleUsingGET
6878+
* @param {string} studyId - Study ID e.g. acc_tcga
6879+
* @param {string} resourceId - Resource ID
6880+
* @param {string} projection - Level of detail of the response
6881+
* @param {integer} pageSize - Page size of the result list
6882+
* @param {integer} pageNumber - Page number of the result list
6883+
* @param {string} sortBy - Name of the property that the result list is sorted by
6884+
* @param {string} direction - Direction of the sort
6885+
*/
6886+
getAllStudyResourceDataInStudyPatientSampleUsingGET(parameters: {
6887+
'studyId': string,
6888+
'resourceId' ? : string,
6889+
'projection' ? : "ID" | "SUMMARY" | "DETAILED" | "META",
6890+
'pageSize' ? : number,
6891+
'pageNumber' ? : number,
6892+
'sortBy' ? : "ResourceId" | "url",
6893+
'direction' ? : "ASC" | "DESC",
6894+
$queryParameters ? : any,
6895+
$domain ? : string
6896+
}): Promise < Array < ResourceData >
6897+
> {
6898+
return this.getAllStudyResourceDataInStudyPatientSampleUsingGETWithHttpInfo(parameters).then(function(response: request.Response) {
6899+
return response.body;
6900+
});
6901+
};
67496902
getAllResourceDefinitionsInStudyUsingGETURL(parameters: {
67506903
'studyId': string,
67516904
'projection' ? : "ID" | "SUMMARY" | "DETAILED" | "META",

packages/genome-nexus-ts-api-client/src/generated/GenomeNexusAPI-docs.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,6 +1606,15 @@
16061606
},
16071607
"ncitCode": {
16081608
"type": "string"
1609+
},
1610+
"synonyms": {
1611+
"type": "array",
1612+
"items": {
1613+
"type": "string"
1614+
}
1615+
},
1616+
"uuid": {
1617+
"type": "string"
16091618
}
16101619
}
16111620
},

packages/genome-nexus-ts-api-client/src/generated/GenomeNexusAPI.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ export type Drug = {
192192

193193
'ncitCode': string
194194

195+
'synonyms': Array < string >
196+
197+
'uuid': string
198+
195199
};
196200
export type EnsemblFilter = {
197201
'geneIds': Array < string >

0 commit comments

Comments
 (0)