# backend/core/workdir_config.py
from pathlib import Path
import json
from typing import Dict, Any, Optional
from datetime import datetime

class WorkDirConfigManager:
    """Manages configuration files in work directories"""
    
    DEFAULT_CONFIG = {
        "version": "1.0",
        "created_at": "",
        "updated_at": "",
        "group_settings": {}
    }
    
    def __init__(self, work_dir: str):
        self.work_dir = Path(work_dir)
        self.config_file = self.work_dir / "script_config.json"
        
    def get_config(self) -> Dict[str, Any]:
        """Get configuration for work directory"""
        if self.config_file.exists():
            try:
                with open(self.config_file, 'r', encoding='utf-8') as f:
                    return json.load(f)
            except Exception as e:
                print(f"Error loading work dir config: {e}")
                return self._create_default_config()
        return self._create_default_config()
    
    def _create_default_config(self) -> Dict[str, Any]:
        """Create default configuration"""
        config = self.DEFAULT_CONFIG.copy()
        now = datetime.now().isoformat()
        config["created_at"] = now
        config["updated_at"] = now
        return config
    
    def save_config(self, config: Dict[str, Any]):
        """Save configuration to file"""
        # Ensure work directory exists
        self.work_dir.mkdir(parents=True, exist_ok=True)
        
        # Update timestamp
        config["updated_at"] = datetime.now().isoformat()
        
        # Save config
        with open(self.config_file, 'w', encoding='utf-8') as f:
            json.dump(config, f, indent=4)
    
    def get_group_config(self, group_id: str) -> Dict[str, Any]:
        """Get configuration for specific script group"""
        config = self.get_config()
        return config["group_settings"].get(group_id, {})
    
    def update_group_config(self, group_id: str, settings: Dict[str, Any]):
        """Update configuration for specific script group"""
        config = self.get_config()
        
        if "group_settings" not in config:
            config["group_settings"] = {}
            
        config["group_settings"][group_id] = settings
        self.save_config(config)
        
    def remove_group_config(self, group_id: str):
        """Remove configuration for specific script group"""
        config = self.get_config()
        if group_id in config.get("group_settings", {}):
            del config["group_settings"][group_id]
            self.save_config(config)