From 4f42ae44ae0be74df5e10d9b5139240d17890a58 Mon Sep 17 00:00:00 2001 From: saravanpa-aot Date: Fri, 10 Nov 2023 12:42:06 -0800 Subject: [PATCH] survey updated with new survey id (#9) --- .../services/ops/survey_etl_service.py | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/met-etl/src/etl_project/services/ops/survey_etl_service.py b/met-etl/src/etl_project/services/ops/survey_etl_service.py index 5bb6ee027..46adfd9b0 100644 --- a/met-etl/src/etl_project/services/ops/survey_etl_service.py +++ b/met-etl/src/etl_project/services/ops/survey_etl_service.py @@ -1,13 +1,12 @@ -from dagster import Out, Output, op -from sqlalchemy import func -from datetime import datetime - from analytics_api.models.etlruncycle import EtlRunCycle as EtlRunCycleModel from analytics_api.models.request_type_option import RequestTypeOption as EtlRequestTypeOption from analytics_api.models.response_type_option import ResponseTypeOption as EtlResponseTypeOptionModel from analytics_api.models.survey import Survey as EtlSurveyModel -from met_api.models.survey import Survey as MetSurveyModel from analytics_api.utils.util import FormIoComponentType +from dagster import Out, Output, op +from datetime import datetime +from met_api.models.survey import Survey as MetSurveyModel +from sqlalchemy import func # get the last run cycle id for survey etl @@ -248,8 +247,8 @@ def survey_end_run_cycle(context, survey_new_runcycleid): def _update_survey_responses_with_active_survey_id(session, survey): - etl_active_survey_id = session.query(EtlSurveyModel.id).filter(EtlSurveyModel.source_survey_id == survey.id, - EtlSurveyModel.is_active == True) + etl_active_survey_id = session.query(EtlSurveyModel.id).filter( + EtlSurveyModel.source_survey_id == survey.id, EtlSurveyModel.is_active == True).first() subquery = ( session.query(EtlSurveyModel.id) @@ -257,7 +256,13 @@ def _update_survey_responses_with_active_survey_id(session, survey): .subquery() ) - session.query(EtlResponseTypeOptionModel).filter(EtlResponseTypeOptionModel.survey_id.in_(subquery)).update( - {'survey_id': etl_active_survey_id}, synchronize_session=False) + # Fetch response records + response_records = session.query(EtlResponseTypeOptionModel).filter( + EtlResponseTypeOptionModel.survey_id.in_(subquery)).all() + + # Update each response record individually + for record in response_records: + session.query(EtlResponseTypeOptionModel).filter(EtlResponseTypeOptionModel.id == record.id).update( + {'survey_id': etl_active_survey_id}, synchronize_session='fetch') session.commit()