11import logging
2-
3-
42from sqlalchemy import distinct , func
5-
6-
73from odmtools .odmdata import SessionFactory
84from odmtools .odmdata import Site
95# from odmtools.odmdata import Variable
106from odm2api .ODM2 .models import *
11- from odmtools .odmdata import Unit
127from odmtools .odmdata import Series
138from odmtools .odmdata import DataValue
149from odmtools .odmdata import Qualifier
1510from odmtools .odmdata import OffsetType
1611from odmtools .odmdata import Sample
1712# from odmtools.odmdata import Method
18- from odm2api .ODM2 .models import Methods
1913from odmtools .odmdata import QualityControlLevel
2014from odmtools .odmdata import ODMVersion
2115from odmtools .common .logger import LoggerTool
2216import pandas as pd
2317from odm2api .ODM2 .services .createService import CreateODM2
24- from odm2api .ODM2 .models import Annotations
2518from odm2api .ODM2 .services .readService import *
2619
2720
@@ -51,12 +44,13 @@ def get_db_version(self):
5144#####################
5245
5346 # Site methods
54- def get_all_sites (self ):
47+ def get_all_sites (self ): # Site -> Sampling Feature in ODM2
5548 """
5649
5750 :return: List[Sites]
5851 """
59- return self ._edit_session .query (Site ).order_by (Site .code ).all ()
52+ # return self._edit_session.query(Site).order_by(Site.code).all()
53+ return self .read_service .getSamplingFeatures (ids = None , codes = None , uuids = None ,type = None , wkt = None )
6054
6155
6256 def get_used_sites (self ):
@@ -65,10 +59,12 @@ def get_used_sites(self):
6559 :return: List[Sites]
6660 """
6761 try :
68- site_ids = [x [0 ] for x in self ._edit_session .query (distinct (Series . site_id )).all ()]
62+ site_ids = [site_ids [0 ] for site_ids in self ._edit_session .query (distinct (Results . FeatureActionID )).all ()]
6963 except :
7064 site_ids = None
7165
66+ site_ids = self ._edit_session .query (FeatureActions .SamplingFeatureID ).filter (FeatureActions .FeatureActionID .in_ (site_ids )).all ()
67+
7268 if not site_ids :
7369 return None
7470
@@ -85,10 +81,11 @@ def get_site_by_id(self, site_id):
8581 :param site_id: integer- the identification number of the site
8682 :return: Sites
8783 """
88- try :
89- return self ._edit_session .query (Site ).filter_by (id = site_id ).first ()
90- except :
91- return None
84+ # try:
85+ # return self._edit_session.query(Site).filter_by(id=site_id).first()
86+ # except:
87+ # return None
88+ return self .read_service .getSamplingFeatures (ids = site_id )
9289
9390 # Variables methods
9491 def get_used_variables (self ):
@@ -98,10 +95,12 @@ def get_used_variables(self):
9895 """
9996
10097 try :
101- var_ids = [x [0 ] for x in self ._edit_session .query (distinct (Series .variable_id )).all ()]
98+ # var_ids = [x[0] for x in self._edit_session.query(distinct(Series.variable_id)).all()]
99+ var_ids = [x [0 ] for x in self ._edit_session .query (distinct (Results .VariableID )).all ()]
102100 except :
103101 var_ids = None
104102
103+ var_ids = self ._edit_session .query (Results .VariableID ).filter (Results .VariableID .in_ (var_ids )).all ()
105104 if not var_ids :
106105 return None
107106
@@ -115,32 +114,25 @@ def get_used_variables(self):
115114
116115 def get_all_variables (self ):
117116 """
118-
119117 :return: List[Variables]
120118 """
121- return self ._edit_session . query ( Variables ). all ( )
119+ return self .read_service . getVariables ( ids = None , codes = None )
122120
123121 def get_variable_by_id (self , variable_id ):
124122 """
125123
126124 :param variable_id: int
127125 :return: Variables
128126 """
129- try :
130- return self ._edit_session .query (Variables ).filter_by (id = variable_id ).first ()
131- except :
132- return None
127+ return self .read_service .getVariables (ids = variable_id )
133128
134129 def get_variable_by_code (self , variable_code ):
135130 """
136131
137132 :param variable_code: str
138133 :return: Variables
139134 """
140- try :
141- return self ._edit_session .query (Variables ).filter_by (code = variable_code ).first ()
142- except :
143- return None
135+ return self .read_service .getVariables (codes = variable_code )
144136
145137 def get_variables_by_site_code (self , site_code ): # covers NoDV, VarUnits, TimeUnits
146138 """
@@ -163,50 +155,39 @@ def get_variables_by_site_code(self, site_code): # covers NoDV, VarUnits, TimeU
163155 # Unit methods
164156 def get_all_units (self ):
165157 """
166-
167158 :return: List[Units]
168159 """
169- return self ._edit_session . query ( Unit ). all ( )
160+ return self .read_service . getUnits ( ids = None , name = None , type = None )
170161
171162 def get_unit_by_name (self , unit_name ):
172163 """
173-
174164 :param unit_name: str
175165 :return: Units
176166 """
177- try :
178- return self ._edit_session .query (Unit ).filter_by (name = unit_name ).first ()
179- except :
180- return None
167+ return self .read_service .getUnits (name = unit_name )
181168
182169 def get_unit_by_id (self , unit_id ):
183170 """
184-
185171 :param unit_id: int
186172 :return: Units
187173 """
188- try :
189- return self ._edit_session .query (Unit ).filter_by (id = unit_id ).first ()
190- except :
191- return None
174+ self .read_service .getUnits (ids = unit_id )
192175
193-
194- def get_all_qualifiers (self ):
176+ def get_all_qualifiers (self ): # Rename to annotations
195177 """
196-
197178 :return: List[Qualifiers]
198179 """
199180 # result = self._edit_session.query(Annotations).order_by(Annotations.AnnotationCode).all()
200181 # return result
201182 return self .read_service .getAnnotations (None )
202183
203- def get_qualifier_by_code (self , code ):
184+ def get_qualifier_by_code (self , code ): # Rename to get_annotations_by_type
204185 """
205-
206186 :return: Qualifiers
207187 """
208- result = self ._edit_session .query (Qualifier ).filter (Qualifier .code == code ).first ()
209- return result
188+ # result = self._edit_session.query(Qualifier).filter(Qualifier.code==code).first()
189+ # return result
190+ return self .read_service .getAnnotations (type = code )
210191
211192 def get_qualifiers_by_series_id (self , series_id ):
212193 """
@@ -218,40 +199,23 @@ def get_qualifiers_by_series_id(self, series_id):
218199 Series .data_values ).filter (Series .id == series_id , DataValue .qualifier_id != None ).distinct ().subquery ()
219200 return self ._edit_session .query (Qualifier ).join (subquery ).distinct ().all ()
220201
221- #QCL methods
222- def get_all_qcls (self ):
223- return self ._edit_session .query (QualityControlLevel ).all ()
202+ def get_all_processing_levels (self ):
203+ return self .read_service .getProcessingLevels (ids = None , codes = None )
224204
225- def get_qcl_by_id (self , qcl_id ):
226- try :
227- return self ._edit_session .query (QualityControlLevel ).filter_by (id = qcl_id ).first ()
228- except :
229- return None
205+ def get_processing_level_by_id (self , proc_level_id ):
206+ return self .read_service .getProcessingLevels (ids = proc_level_id )
230207
231- def get_qcl_by_code (self , qcl_code ):
232- try :
233- return self ._edit_session .query (QualityControlLevel ).filter_by (code = qcl_code ).first ()
234- except :
235- return None
208+ def get_processing_level_by_code (self , proc_level_code ):
209+ return self .read_service .getProcessingLevels (codes = proc_level_code )
236210
237- # Method methods
238211 def get_all_methods (self ):
239- return self ._edit_session . query ( Methods ). all ( )
212+ return self .read_service . getMethods ( ids = None , codes = None , type = None )
240213
241214 def get_method_by_id (self , method_id ):
242- try :
243- result = self ._edit_session .query (Methods ).filter_by (id = method_id ).first ()
244- except :
245- result = None
246- return result
215+ return self .read_service .getMethods (ids = method_id )
247216
248- def get_method_by_description (self , method_code ):
249- try :
250- result = self ._edit_session .query (Methods ).filter_by (description = method_code ).first ()
251- except :
252- result = None
253- logger .error ("method not found" )
254- return result
217+ def get_method_by_code (self , method_code ):
218+ return self .read_service .getMethods (codes = method_code )
255219
256220 def get_offset_types_by_series_id (self , series_id ):
257221 """
0 commit comments