@@ -7,14 +7,14 @@ import DatasetCreate from "./DatasetListValidationSchema.json";
77import { ResponseHandler } from "../../helpers/ResponseHandler" ;
88import { attachDraftConnectors , attachLiveConnectors , datasetService } from "../../services/DatasetService" ;
99import { obsrvError } from "../../types/ObsrvError" ;
10- import { Dataset } from "../../models/Dataset" ;
11- import { Datasource } from "../../models/Datasource" ;
10+ import { config } from "../../configs/Config" ;
1211
1312export const apiId = "api.datasets.list"
1413export const errorCode = "DATASET_LIST_FAILURE"
1514const liveDatasetStatus = [ "Live" , "Retired" , "Purged" ]
1615const draftDatasetStatus = [ "Draft" , "ReadyToPublish" ]
1716const defaultFields = [ "dataset_id" , "name" , "type" , "status" , "tags" , "version" , "api_version" , "dataset_config" , "created_date" , "updated_date" ]
17+ const MAX_STATUS_ARRAY_SIZE = config . dataset_filter_config . filter_limit || 10 ;
1818
1919const datasetList = async ( req : Request , res : Response ) => {
2020
@@ -37,6 +37,9 @@ const listDatasets = async (request: Record<string, any>): Promise<Record<string
3737 const datasetStatus = _ . get ( filters , "status" ) ;
3838 const connectorFilter = _ . get ( filters , "connectors" ) ;
3939 const status = _ . isArray ( datasetStatus ) ? datasetStatus : _ . compact ( [ datasetStatus ] )
40+ if ( status . length > MAX_STATUS_ARRAY_SIZE ) {
41+ throw obsrvError ( "" , "DATASET_LIST_INPUT_INVALID" , "Status filter array length exceeds the allowed limit" , "BAD_REQUEST" , 400 ) ;
42+ }
4043 const draftFilters = _ . omit ( _ . set ( _ . cloneDeep ( filters ) , "status" , _ . isEmpty ( status ) ? draftDatasetStatus : _ . intersection ( status , draftDatasetStatus ) ) , "connectors" ) ;
4144 const liveFilters = _ . omit ( _ . set ( _ . cloneDeep ( filters ) , "status" , _ . isEmpty ( status ) ? liveDatasetStatus : _ . intersection ( status , liveDatasetStatus ) ) , "connectors" ) ;
4245 let liveDatasetList = await datasetService . getLiveDatasets ( liveFilters , defaultFields )
0 commit comments