@@ -14,36 +14,56 @@ async def builder(self, request: Request, datasets, qparams, entry_type, entry_i
14
14
source_entry_type = source_entry_type [1 ]
15
15
if source_entry_type == 'analyses' :
16
16
source = analyses ['database' ]
17
+ source_granularity = analyses ['granularity' ]
17
18
elif source_entry_type == 'biosamples' :
18
19
source = biosamples ['database' ]
20
+ source_granularity = biosamples ['granularity' ]
19
21
elif source_entry_type == 'individuals' :
20
22
source = individuals ['database' ]
23
+ source_granularity = individuals ['granularity' ]
21
24
elif source_entry_type == 'runs' :
22
25
source = runs ['database' ]
26
+ source_granularity = runs ['granularity' ]
23
27
elif entry_type == 'g_variants' :
24
28
source = g_variants ['database' ]
29
+ source_granularity = g_variants ['granularity' ]
25
30
elif '_' in entry_type :
26
31
source = g_variants ['database' ]
32
+ source_granularity = g_variants ['granularity' ]
27
33
elif entry_type == 'analyses' :
28
34
source = analyses ['database' ]
35
+ source_granularity = analyses ['granularity' ]
29
36
elif entry_type == 'biosamples' :
30
37
source = biosamples ['database' ]
38
+ source_granularity = biosamples ['granularity' ]
31
39
elif entry_type == 'individuals' :
32
40
source = individuals ['database' ]
41
+ source_granularity = individuals ['granularity' ]
33
42
elif entry_type == 'runs' :
34
43
source = runs ['database' ]
44
+ source_granularity = runs ['granularity' ]
45
+ if source_granularity ['record' ]== True :
46
+ allowed_granularity = 'record'
47
+ elif source_granularity ['count' ]== True :
48
+ allowed_granularity = 'count'
49
+ else :
50
+ allowed_granularity = 'boolean'
35
51
complete_module = 'beacon.connections.' + source + '.executor'
36
52
import importlib
37
53
module = importlib .import_module (complete_module , package = None )
38
54
testMode = qparams .query .test_mode
39
55
if testMode == True :
40
56
datasets = ['test' ]
41
57
datasets_docs , datasets_count , count , entity_schema , include , datasets = await module .execute_function (self , entry_type , datasets , qparams , entry_id )
42
- if include != 'NONE' and granularity == Granularity .RECORD and max_beacon_granularity == 'record' :
58
+ if include != 'NONE' and granularity == Granularity .RECORD and max_beacon_granularity == 'record' and allowed_granularity == 'record' :
43
59
response = build_beacon_record_response_by_dataset (self , datasets , datasets_docs , datasets_count , count , qparams , entity_schema )
44
- elif include == 'NONE' and granularity == Granularity .RECORD and max_beacon_granularity == 'record' :
60
+ elif include == 'NONE' and granularity == Granularity .RECORD and max_beacon_granularity == 'record' and allowed_granularity == 'record' :
45
61
response = build_beacon_none_response (self , datasets_docs ["NONE" ], count , qparams , entity_schema )
46
- elif granularity == Granularity .COUNT and max_beacon_granularity in ['count' , 'record' ] or granularity == Granularity .RECORD and max_beacon_granularity in ['count' ]:
62
+ elif granularity == Granularity .COUNT and max_beacon_granularity in ['count' , 'record' ] and allowed_granularity in ['count' , 'record' ]:
63
+ response = build_beacon_count_response (self , count , qparams , entity_schema )
64
+ elif granularity == Granularity .RECORD and max_beacon_granularity in ['count' ] and allowed_granularity in ['count' , 'record' ]:
65
+ response = build_beacon_count_response (self , count , qparams , entity_schema )
66
+ elif granularity == Granularity .RECORD and allowed_granularity in ['count' ] and max_beacon_granularity in ['count' , 'record' ]:
47
67
response = build_beacon_count_response (self , count , qparams , entity_schema )
48
68
else :
49
69
response = build_beacon_boolean_response (self , count , qparams , entity_schema )
0 commit comments