@@ -162,45 +162,34 @@ def update_base_studies(self, base_studies):
162162
163163 # Subquery for new_has_coordinates
164164 new_has_coordinates_subquery = (
165- sa .select (
166- sa .func .coalesce (
167- sa .func .bool_and (Point .analysis_id != None ), False # noqa E711
168- ) # noqa E711
169- )
170- .where (Point .analysis_id == Analysis .id )
171- .correlate (Study )
165+ sa .select (sa .func .count (Point .id ) > 0 )
166+ .select_from (Study )
167+ .join (Analysis , Analysis .study_id == Study .id )
168+ .join (Point , Point .analysis_id == Analysis .id )
169+ .where (Study .base_study_id == BaseStudy .id )
170+ .correlate (BaseStudy )
172171 .scalar_subquery ()
173172 )
174173
175174 # Subquery for new_has_images
176175 new_has_images_subquery = (
177- sa .select (
178- sa .func .coalesce (
179- sa .func .bool_and (Image .analysis_id != None ), False # noqa E711
180- ) # noqa E711
181- )
182- .where (Image .analysis_id == Analysis .id )
183- .correlate (Study )
176+ sa .select (sa .func .count (Image .id ) > 0 )
177+ .select_from (Study )
178+ .join (Analysis , Analysis .study_id == Study .id )
179+ .join (Image , Image .analysis_id == Analysis .id )
180+ .where (Study .base_study_id == BaseStudy .id )
181+ .correlate (BaseStudy )
184182 .scalar_subquery ()
185183 )
186184
187185 # Main query
188- query = (
189- sa .select (
190- BaseStudy .id ,
191- BaseStudy .has_images ,
192- BaseStudy .has_coordinates ,
193- new_has_coordinates_subquery .label ("new_has_coordinates" ),
194- new_has_images_subquery .label ("new_has_images" ),
195- )
196- .distinct ()
197- .select_from (BaseStudy )
198- .join (Study , Study .base_study_id == BaseStudy .id )
199- .outerjoin (Analysis , Analysis .study_id == Study .id )
200- .where (
201- BaseStudy .id .in_ (base_studies ),
202- )
203- )
186+ query = sa .select (
187+ BaseStudy .id ,
188+ BaseStudy .has_images ,
189+ BaseStudy .has_coordinates ,
190+ new_has_coordinates_subquery .label ("new_has_coordinates" ),
191+ new_has_images_subquery .label ("new_has_images" ),
192+ ).where (BaseStudy .id .in_ (base_studies ))
204193
205194 affected_base_studies = db .session .execute (query ).fetchall ()
206195 update_base_studies = []
0 commit comments