from src.constants import DATE_PATTERN_YYYYMMDDTHHMMSSTZ from src.util.dict_checker import DictCheck class FetchTargetObjects(): def __init__(self, object_info_file_dict) -> None: self.__dict_check = DictCheck() self.__objects = object_info_file_dict self.__key = 'objects' self.check_key_objects() self.__i = 0 def __iter__(self): return self def __next__(self): if self.__i == len(self.__objects[self.__key]): raise StopIteration() value = self.__objects['objects'][self.__i] self.__i += 1 return value def check_key_objects(self) -> None: __check_key = self.__key __check_type = list self.__dict_check.check_key_exist_and_value_type( self.__objects, __check_key, __check_type) class TargetObject(): def __init__(self, object_info, execute_datetime) -> None: self.__dict_check = DictCheck() self.__object_info = object_info self.execute_datetime = execute_datetime self.check_key_object_name() self.check_key_columns() self.check_key_is_skip() self.check_key_is_update_last_fetch_datetime() self.check_key_last_fetch_datetime_file_name() self.check_key_upload_file_name() self.object_name = self.__object_info['object_name'] self.columns = self.__object_info['columns'] self.is_skip = self.set_is_skip() self.is_update_last_fetch_datetime = self.set_is_update_last_fetch_datetime() self.last_fetch_datetime_file_name = self.set_fetch_datetime_file_name() self.upload_file_name = self.set_upload_file_name() def check_key_object_name(self) -> None: ''' オブジェクト名チェック ''' __check_key = 'object_name' __check_type = str self.__dict_check.check_key_exist_and_value_type( self.__object_info, __check_key, __check_type) return def check_key_columns(self) -> None: ''' カラム情報チェック ''' __key = 'columns' __type = list self.__dict_check.check_key_exist_and_value_type( self.__object_info, __key, __type) return def check_key_is_skip(self,) -> None: ''' スキップフラグ型チェック ''' __check_key = 'is_skip' __check_type = bool self.__dict_check.check_key_exist_case_value_type( self.__object_info, __check_key, __check_type) return def check_key_is_update_last_fetch_datetime(self) -> None: ''' 前回取得日時ファイル更新フラグチェック ''' __check_key = 'is_update_last_fetch_datetime' __check_type = bool self.__dict_check.check_key_exist_case_value_type( self.__object_info, __check_key, __check_type) return def check_key_last_fetch_datetime_file_name(self) -> None: ''' 前回取得日時ファイル名型チェック ''' __check_key = 'last_fetch_datetime_file_name' __check_type = str self.__dict_check.check_key_exist_case_value_type( self.__object_info, __check_key, __check_type) return def check_key_upload_file_name(self) -> None: ''' アップロードファイル名称型チェック ''' __check_key = 'upload_file_name' __check_type = str self.__dict_check.check_key_exist_case_value_type( self.__object_info, __check_key, __check_type) return def set_is_skip(self) -> bool: ''' スキップフラグ設定 ''' __check_key = 'is_skip' if self.__dict_check.check_key_exist(self.__object_info, __check_key): return self.__object_info[__check_key] else: return False def set_is_update_last_fetch_datetime(self) -> bool: ''' 前回取得日時ファイル更新フラグ設定 ''' __check_key = 'is_update_last_fetch_datetime' if self.__dict_check.check_key_exist(self.__object_info, __check_key): return self.__object_info[__check_key] else: return False def set_fetch_datetime_file_name(self) -> str: ''' 前回取得日時ファイル名設定 ''' __check_key = 'last_fetch_datetime_file_name' if self.__dict_check.check_key_exist(self.__object_info, __check_key): return self.__object_info[__check_key] else: return self.__object_info['object_name'] + '.json' def set_upload_file_name(self) -> str: ''' アップロードファイル名称設定 ''' __check_key = 'upload_file_name' if self.__dict_check.check_key_exist(self.__object_info, __check_key): return self.__object_info[__check_key].format(execute_datetime=self.execute_datetime) else: return 'CRM_' + self.__object_info['object_name'] + '_' + self.execute_datetime class LastFetchDatetime(): def __init__(self, last_fetch_datetime_file_name, last_fetch_datetime_file_dict, execute_datetime) -> None: self.__dict_check = DictCheck() self.execute_datetime = execute_datetime self.__last_fetch_datetime_file_dict = last_fetch_datetime_file_dict self.last_fetch_datetime_file_name = last_fetch_datetime_file_name self.check_key_last_fetch_datetime_from self.check_key_last_fetch_datetime_to self.last_fetch_datetime_from = self.__last_fetch_datetime_file_dict[ 'last_fetch_datetime_from'] self.last_fetch_datetime_to = self.set_last_fetch_datetime_to() def check_key_last_fetch_datetime_from(self) -> None: ''' データ取得開始日時チェック ''' __check_key = 'last_fetch_datetime_from' __regex_str = DATE_PATTERN_YYYYMMDDTHHMMSSTZ self.__dict_check.check_key_exsit_and_regex( self.__last_fetch_datetime_file_dict, __check_key, __regex_str) def check_key_last_fetch_datetime_to(self) -> None: ''' データ取得終了日時チェック ''' __check_key = 'last_fetch_datetime_to' __regex_str = DATE_PATTERN_YYYYMMDDTHHMMSSTZ self.__dict_check.check_key_exsit_case_regex( self.__last_fetch_datetime_file_dict, __check_key, __regex_str) def set_last_fetch_datetime_to(self) -> str: ''' データ取得終了日時設定 ''' __check_key = 'last_fetch_datetime_to' if self.__dict_check.check_key_exist(self.__last_fetch_datetime_file_dict, __check_key): return self.__last_fetch_datetime_file_dict[__check_key].format(execute_datetime=self.execute_datetime) else: return self.execute_datetime