69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
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
|