blob: 682b4fb875ab30cb334d593d9369a674473e0a07 [file] [log] [blame]
import json
from dataclasses import dataclass
from pathlib import Path
from typing import Dict, Any, Tuple
from slugify import slugify
from execute.base import BaseRepository
# Import database function - adjust path as needed
from db import store_simulation_script
@dataclass
class ScriptRepository(BaseRepository):
"""Persists metadata & simulate.py; registers the script in DB."""
root: Path = Path("models")
def save_and_register(self, metadata: Dict[str, Any], code: str) -> Tuple[str, Path]:
model_slug = slugify(metadata.get("model_name", "unnamed_model"))
model_dir = self.root / model_slug
model_dir.mkdir(parents=True, exist_ok=True)
(model_dir / "metadata.json").write_text(json.dumps(metadata, indent=2))
(model_dir / "simulate.py").write_text(code)
model_id = store_simulation_script(
model_name=model_slug,
metadata=metadata,
script_path=str(model_dir / "simulate.py"),
)
print(f"[✓] stored model_id = {model_id} dir = {model_dir}")
return model_id, model_dir