import json from api_services.bank_actions.wag_account_record_parser import parse_comment_with_name from databases import ( AccountRecords, BuildIbans, BuildDecisionBook, ) from api_validations.validations_request import ( ListOptions ) from api_library.date_time_actions.date_functions import ( system_arrow ) from service_account_records.configs import AccountConfig account_list = ListOptions( page=1, size=1000, order_field="bank_date", order_type="desc", ) def account_records_find_decision_book(): created_ibans, iban_build_dict = [], {} AccountRecords.filter_attr = account_list created_ibans, iban_build_dict = [], {} AccountRecords.filter_attr = account_list days_before_now = system_arrow.now().shift(days=(int(AccountConfig.BEFORE_DAY) * -1)) account_records_list: list[AccountRecords] = AccountRecords.filter_all( # AccountRecords.bank_date >= str(days_before_now), AccountRecords.build_decision_book_id == None, system=True ).data for account_record in account_records_list: if account_record.iban not in created_ibans: found_iban: BuildIbans = BuildIbans.filter_one( BuildIbans.iban == account_record.iban, system=True ).data if not found_iban: create_build_ibans = BuildIbans.find_or_create( iban=account_record.iban, start_date=str(system_arrow.now().shift(days=-1)), ) create_build_ibans.save_and_confirm() created_ibans.append(account_record.iban) # It is in database already if not found_iban.build_id: iban_build_dict["iban"] = account_record.iban iban_build_dict["build_id"] = None else: found_decision_book = BuildDecisionBook.filter_one( BuildDecisionBook.build_id == found_iban.build_id, BuildDecisionBook.expiry_starts <= account_record.bank_date, BuildDecisionBook.expiry_ends > account_record.bank_date, ).data if found_decision_book: print('found_decision_book', found_decision_book.get_dict()) account_record.update( build_decision_book_id=found_decision_book.id, build_decision_book_uu_id=str(found_decision_book.uu_id), ) account_record.save() print('iban_build_dict', iban_build_dict) print('created_ibans', created_ibans) return def account_records_search(): AccountRecords.filter_attr = account_list account_records_list: list[AccountRecords] = AccountRecords.filter_all( AccountRecords.build_decision_book_id != None, system=True ).data for account_record in account_records_list: print('account_record', account_record.get_dict()) similarity_result = parse_comment_with_name(account_record.iban, account_record.process_comment) print('similarity_result', similarity_result) # build_iban = BuildIbans.find_one(iban=data["iban"]) print('account_records_list', account_records_list) return def account_records_service() -> None: account_records_find_decision_book() account_records_search() return if __name__ == "__main__": account_records_service()