from src.config.objects import TargetObject
from src.error.exceptions import InvalidConfigException
from src.system_var.constants import CHK_JP_NAME
from src.util.execute_datetime import ExecuteDateTime
from src.util.logger import logger_instance as logger


def check_object_info_process(object_info: dict, execute_datetime: ExecuteDateTime):
    """オブジェクト情報形式チェック処理

    Args:
        object_info (dict): 取得対象オブジェクト情報
        execute_datetime (ExecuteDateTime): 実行日時取得インスタンス

    Raises:
        InvalidConfigException: オブジェクト情報定義が不正だった場合

    Returns:
        target_object: 取得対象オブジェクト情報インスタンス
    """

    # ① オブジェクト情報形式チェック処理開始ログを出力する
    logger.info('I-CHK-01 オブジェクト情報形式チェック処理を開始します')

    try:
        # ② オブジェクト情報形式チェック
        target_object = TargetObject(object_info, execute_datetime)

    except Exception as e:
        raise InvalidConfigException(
            'E-CHK-01', CHK_JP_NAME, f'オブジェクト情報形式チェック処理が失敗しました　エラー内容：[{e}]')

    # ③ チェック処理終了ログを出力する
    logger.info('I-CHK-02 オブジェクト情報形式チェック処理を終了します')

    # ④ 次の処理へ移行する
    return target_object
