import os import shutil from app_status import AppStatus from lib.custom_logger import get_logger logger = get_logger() class AppFileStorage: @classmethod def create_output_dir(cls) -> str: """出力ディレクトリを作成してパスを返す""" app_status = AppStatus() base_dir = app_status.output_base_dir request_id = app_status.request_id if not request_id: raise ValueError("Request ID is not set in AppStatus") try: output_dir = f"{base_dir}/{request_id}" os.makedirs(output_dir, exist_ok=True) logger.info(f"Output directory created at: {output_dir}") except Exception as e: logger.error(f"Error creating output directory: {e}") raise @classmethod def copy_to_source(cls) -> str: """出力ディレクトリを作成してパスを返す""" app_status = AppStatus() # ファイル元のパス source_file = app_status.input_filepath # ファイルのコピー先ディレクトリ destination_dir = app_status.source_dir if not destination_dir: raise ValueError("Source directory is not set in AppStatus") try: os.makedirs(destination_dir, exist_ok=True) # ファイル名を取得してコピー先のフルパスを作成 filename = os.path.basename(source_file) destination_file = os.path.join(destination_dir, filename) # ファイルをコピー shutil.copy2(source_file, destination_file) logger.info(f"File copied to source directory: {destination_file}") app_status.source_file = destination_file return destination_file except Exception as e: logger.error(f"Error copying file to source directory: {e}") raise @classmethod def set_source_file(cls) -> str: app_status = AppStatus() # ファイル元のパス source_file = app_status.input_filepath # ファイルのコピー先ディレクトリ destination_dir = app_status.source_dir if not destination_dir: raise ValueError("Source directory is not set in AppStatus") try: os.makedirs(destination_dir, exist_ok=True) # ファイル名を取得してコピー先のフルパスを作成 filename = os.path.basename(source_file) destination_file = os.path.join(destination_dir, filename) app_status.source_file = destination_file return destination_file except Exception as e: logger.error(f"Error copying file to source directory: {e}") raise