import os
from datetime import datetime
from ini import init
from chk import check
from main import main
from end import end
from error import error

# 引数
BUCKET_NAME = os.environ["BUCKET_NAME"]
TARGET_KEY = os.environ["TARGET_KEY"]
DATA_SOURCE_NAME = os.environ["DATA_SOURCE_NAME"]
FILE_NAME = os.environ["FILE_NAME"]
MODE = os.environ["MODE"]

# 環境変数
DB_HOST = os.environ["DB_HOST"]
DB_NAME = os.environ["DB_NAME"]
DB_PASS = os.environ["DB_PASS"]
DB_USER = os.environ["DB_USER"]
DB_INFO = {"host": DB_HOST, "name": DB_NAME, "pass": DB_PASS, "user": DB_USER}

# 定数
LOG_LEVEL = {"i": 'Info'}
LOG_INFO = f'{DATA_SOURCE_NAME} {FILE_NAME}'


"""コントロール処理

各処理を呼び出すコントローラー

"""

try:
    # ① データ取込処理開始ログを出力する
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-01 - データ取込処理を開始します')

    # ② 初期処理を呼び出す
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-02 - 初期処理の呼び出し')
    settings_key = init(BUCKET_NAME, TARGET_KEY, DATA_SOURCE_NAME, FILE_NAME, LOG_INFO, MODE)

    # ③ チェック処理を呼び出す
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-03 - チェック処理の呼び出し')
    check(BUCKET_NAME, DATA_SOURCE_NAME, FILE_NAME, settings_key, LOG_INFO, MODE)

    # ④ メイン処理を呼び出す
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-04 - メイン処理の呼び出し')
    warning_info = main(BUCKET_NAME, DATA_SOURCE_NAME, FILE_NAME, settings_key, DB_INFO, LOG_INFO, MODE)

    # ⑤ 終了処理を呼び出す
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-05 - 終了処理の呼び出し')
    end(BUCKET_NAME, DATA_SOURCE_NAME, FILE_NAME, warning_info, LOG_INFO, MODE)

    # ⑥ データ取込処理終了ログを出力する
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["i"]} I-CTRL-06 - データ取込処理を終了します')
except Exception as e:
    print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {LOG_INFO} {LOG_LEVEL["e"]} E-CTRL-99 - エラー内容：{e}')
    error(BUCKET_NAME, DATA_SOURCE_NAME, FILE_NAME, LOG_INFO)
