63 lines
2.8 KiB
Python
63 lines
2.8 KiB
Python
from src.util.logger import logger_instance as logger
|
|
from src.constants import(
|
|
DATE_JP_NAME
|
|
)
|
|
from src.environments import (
|
|
CRM_CONFIG_BUCKET,
|
|
LAST_FETCH_DATE_FOLDER
|
|
)
|
|
from src.error.exceptions import(
|
|
FileNotFoundException,
|
|
InvalidConfigException
|
|
)
|
|
from src.parser.json_parse import JsonParser
|
|
from src.config.objects import LastFetchDatetime
|
|
from src.aws.s3 import ConfigBucket
|
|
|
|
|
|
def set_datetime_period(target_object, execute_datetime):
|
|
# ① データ取得期間設定処理の開始ログを出力する
|
|
logger.info(
|
|
f'I-DATE-01 [{target_object.object_name}] のデータ取得期間設定処理を開始します')
|
|
|
|
try:
|
|
# ② S3 設定ファイル保管用バケットから、前回取得日時ファイルを取得する
|
|
logger.info(
|
|
f'I-DATE-02 前回取得日時ファイルの取得開始します ファイルパス:[s3://{CRM_CONFIG_BUCKET}/{LAST_FETCH_DATE_FOLDER}/{target_object.last_fetch_datetime_file_name}]')
|
|
|
|
s3_config_bucket = ConfigBucket()
|
|
last_fetch_datetime_file_json = s3_config_bucket.get_last_fetch_datetime_file(
|
|
target_object.last_fetch_datetime_file_name)
|
|
|
|
logger.info(f'I-DATE-03 前回取得日時ファイルの取得成功しました')
|
|
|
|
except Exception as e:
|
|
raise FileNotFoundException(
|
|
'E-DATE-01', DATE_JP_NAME, f'前回取得日時ファイルが存在しません ファイル名:[{target_object.last_fetch_datetime_file_name}] エラー内容:[{e}]')
|
|
|
|
try:
|
|
# ③ 取得した前回取得日時ファイルの形式チェックを行う
|
|
# ④ データの取得期間を設定する
|
|
logger.debug(f'D-DATE-04 前回取得日時ファイルの形式チェックを開始します')
|
|
|
|
json_parser = JsonParser(last_fetch_datetime_file_json)
|
|
last_fetch_datetime_file_dict = json_parser.json_parser()
|
|
|
|
last_fetch_datetime = LastFetchDatetime(target_object.last_fetch_datetime_file_name,
|
|
last_fetch_datetime_file_dict, execute_datetime)
|
|
|
|
logger.debug(f'D-DATE-05 前回取得日時ファイルの形式チェック 正常終了')
|
|
logger.info(
|
|
f'I-DATE-06 取得範囲 From: [{last_fetch_datetime.last_fetch_datetime_from}] To: [{last_fetch_datetime.last_fetch_datetime_to}]')
|
|
|
|
except Exception as e:
|
|
raise InvalidConfigException(
|
|
'E-DATE-02', DATE_JP_NAME, f'前回取得日時ファイルの形式チェック処理が失敗しました エラー内容:[{e}]')
|
|
|
|
# ⑤ データ取得準備処理の終了ログを出力する
|
|
logger.info(
|
|
f'I-DATE-07 [{target_object.object_name}] のデータ取得期間設定処理を終了します')
|
|
|
|
# ⑥ 次の処理へ移行する
|
|
return last_fetch_datetime
|