import json
from pathlib import Path
from sqlalchemy import select
from app.db.session import SessionLocal
from app.models.voice import Voice

ROOT = Path(__file__).resolve().parents[2]
SEED_FILE = ROOT / "data" / "seed" / "fictional_voices.json"

def main():
    data = json.loads(SEED_FILE.read_text(encoding="utf-8"))
    with SessionLocal() as db:
        for item in data["voices"]:
            if db.scalar(select(Voice).where(Voice.voice_id == item["voice_id"])): continue
            db.add(Voice(
                voice_id=item["voice_id"], voice_name=item["voice_name"], display_name=item["display_name"],
                voice_type=item["voice_type"], status=item.get("status", "ACTIVE"), version=item.get("version", "1.0"),
                owner_type="ADMNWIZARD", owner_id="system", visibility="PUBLIC",
                target_language=item["language"]["target"], native_language=item["language"]["native"],
                native_influence=item["language"]["native_influence"], country=item["geography"]["country"],
                state=item["geography"].get("state"), city=item["geography"].get("city"),
                environment=item["geography"].get("environment"), gender=item["demographics"]["gender"],
                age_group=item["demographics"]["age_group"], apparent_age=item["demographics"].get("apparent_age"),
                voice_dna=item.get("voice_dna", {}), speech_profile=item.get("speech", {}),
                personality=item.get("personality", {}), authenticity=item.get("authenticity", {}), rights=item.get("rights", {}),
                fictional=True, synthetic=True, real_person=False, voice_clone=False, celebrity_voice=False, public_figure_voice=False
            ))
        db.commit()
    print("VoiceOS seed complete.")

if __name__ == "__main__": main()
