1
1
import logging
2
2
from typing import List
3
3
from sqlalchemy .orm import Session
4
+ from sqlalchemy import func
4
5
5
6
from application .core .models import (
6
7
DatasetModel ,
@@ -44,6 +45,13 @@ def get_dataset_query(session: Session, dataset) -> DatasetModel:
44
45
45
46
def get_datasets_with_data_by_typology (
46
47
session : Session , typology
48
+ ) -> List [DatasetModel ]:
49
+ # return get_datasets_with_data_by_typology_old(session, typology)
50
+ return get_datasets_with_data_by_typology_new (session , typology )
51
+
52
+
53
+ def get_datasets_with_data_by_typology_old (
54
+ session : Session , typology
47
55
) -> List [DatasetModel ]:
48
56
from sqlalchemy import func
49
57
@@ -57,6 +65,19 @@ def get_datasets_with_data_by_typology(
57
65
return [DatasetModel .from_orm (ds .DatasetOrm ) for ds in datasets ]
58
66
59
67
68
+ def get_datasets_with_data_by_typology_new (
69
+ session : Session , typology
70
+ ) -> List [DatasetModel ]:
71
+ query = session .query (DatasetOrm ).join (
72
+ EntityOrm , DatasetOrm .dataset == EntityOrm .dataset
73
+ )
74
+ query = query .filter (DatasetOrm .typology == typology )
75
+ query = query .group_by (DatasetOrm .dataset )
76
+ query = query .having (func .count (EntityOrm .entity ) > 0 )
77
+ datasets = query .all ()
78
+ return [DatasetModel .from_orm (ds ) for ds in datasets ]
79
+
80
+
60
81
def get_typologies (session : Session ) -> List [TypologyModel ]:
61
82
typologies = session .query (TypologyOrm ).order_by (TypologyOrm .typology ).all ()
62
83
return [TypologyModel .from_orm (t ) for t in typologies ]
0 commit comments