from sqlalchemy import cast, Date from Schemas import AccountRecords, BuildIbans, BuildDecisionBook def account_records_find_decision_book(session): AccountRecords.set_session(session) BuildIbans.set_session(session) BuildDecisionBook.set_session(session) created_ibans, iban_build_dict = [], {} filter_account_records = AccountRecords.build_id != None, AccountRecords.build_decision_book_id == None account_records_list: list[AccountRecords] = AccountRecords.query.filter(*filter_account_records).order_by(AccountRecords.bank_date.desc()).all() for account_record in account_records_list: if found_iban := BuildIbans.query.filter(BuildIbans.iban == account_record.iban).first(): if found_decision_book := BuildDecisionBook.query.filter( BuildDecisionBook.build_id == found_iban.build_id, cast(BuildDecisionBook.expiry_starts, Date) <= cast(account_record.bank_date, Date), cast(BuildDecisionBook.expiry_ends, Date) >= cast(account_record.bank_date, Date), ).first(): account_record.build_decision_book_id = found_decision_book.id account_record.build_decision_book_uu_id = str(found_decision_book.uu_id) account_record.save() if __name__ == "__main__": print("DecisionBook Service is running...") with AccountRecords.new_session() as session: account_records_find_decision_book(session) print("DecisionBook Service is finished...")