#!/usr/bin/env python3
"""
One-time seed: creates the family profile + members.

Edit the MEMBERS list below to set real names and emails, then run:

    docker cp scripts/seed_family.py mealplanner-backend-1:/app/seed_family.py
    docker compose --env-file .env.test exec backend python /app/seed_family.py

Safe to re-run — exits early if a profile already exists.
"""
import os
import sys

# ── Edit before running ───────────────────────────────────────────────────────
FAMILY_NAME = "Woolery"
FAMILY_CALORIE_TARGET = 500  # per serving per meal
HOUSEHOLD_SIZE = 4
ADULT_COUNT = 2
CHILD_COUNT = 2

MEMBERS = [
    {"name": "Peter",  "email": "peter@research.bike", "role": "adult", "likes_mushrooms": True},
    {"name": "Julia",  "email": "julia@research.bike",  "role": "adult", "likes_mushrooms": False},
    {"name": "Kid 1",  "email": "",                    "role": "child", "likes_mushrooms": False},
    {"name": "Kid 2",  "email": "",                    "role": "child", "likes_mushrooms": False},
]
# ─────────────────────────────────────────────────────────────────────────────

sys.path.insert(0, "/app")

from app.database import SessionLocal
from app.models import FamilyProfile, FamilyMember, FamilyMemberRole

db = SessionLocal()
try:
    existing = db.query(FamilyProfile).first()
    if existing:
        print(f"Family profile already exists (id={existing.id}). Nothing to do.")
        sys.exit(0)

    profile = FamilyProfile(
        name=FAMILY_NAME,
        household_size=HOUSEHOLD_SIZE,
        adult_count=ADULT_COUNT,
        child_count=CHILD_COUNT,
        calorie_target=FAMILY_CALORIE_TARGET,
    )
    db.add(profile)
    db.flush()
    print(f"Created family profile '{FAMILY_NAME}' id={profile.id}")

    for m in MEMBERS:
        if not m["email"]:
            print(f"  Skipping {m['name']} — no email set (edit MEMBERS to add one)")
            continue
        member = FamilyMember(
            family_profile_id=profile.id,
            name=m["name"],
            email=m["email"],
            role=FamilyMemberRole[m["role"].upper()],
            likes_mushrooms=m["likes_mushrooms"],
        )
        db.add(member)
        print(f"  Added: {m['name']} <{m['email']}> role={m['role']}")

    db.commit()
    print("Done.")
finally:
    db.close()
