"""Load the decisions-and-realities list from a JSON file (idempotent, upsert by title)."""

import json
import logging
from pathlib import Path

from sqlalchemy import select
from sqlalchemy.orm import Session

from app.models import DiscussionItem

logger = logging.getLogger(__name__)


def import_discussion(db: Session, path: Path) -> dict[str, int]:
    items = json.loads(path.read_text())
    existing = {i.title: i for i in db.scalars(select(DiscussionItem))}
    stats = {"created": 0, "updated": 0}
    for order, raw in enumerate(items, start=1):
        title = (raw.get("title") or "").strip()
        if not title:
            continue
        fields = dict(
            note=(raw.get("note") or None),
            reality=(raw.get("reality") or None),
            recommendation=(raw.get("recommendation") or None),
            theme=(raw.get("theme") or None),
            needs_decision=bool(raw.get("needs_decision")),
            sort_order=order,
        )
        item = existing.get(title)
        if item is None:
            db.add(DiscussionItem(title=title, **fields))
            stats["created"] += 1
        else:
            for key, value in fields.items():
                setattr(item, key, value)
            stats["updated"] += 1
    db.commit()
    logger.info("discussion_imported %s", stats)
    return stats
