#!/usr/bin/env python3
"""Server-side JSONL importer for search.db"""
import json, sqlite3, sys, os

if len(sys.argv) < 2:
    print("Usage: import_jsonl.py <jsonl_path> [label]")
    sys.exit(1)

jsonl_path = sys.argv[1]
label = sys.argv[2] if len(sys.argv) > 2 else "data"

db = sqlite3.connect(os.getenv("SEARCH_DB", "/root/search.db"))
added = 0
errors = 0

with open(jsonl_path) as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        try:
            item = json.loads(line)
            title = (item.get("title") or "")[:500]
            page_url = (item.get("page_url") or "")[:1000]
            content = item.get("content") or ""
            publish_date = (item.get("publish_date") or "")[:20]
            site_name = (item.get("site_name") or "unknown")[:100]
            
            db.execute(
                "INSERT OR IGNORE INTO gov_raw (title, page_url, content, publish_date, site_name, source_url, status) VALUES (?, ?, ?, ?, ?, ?, 'synced')",
                (title, page_url, content, publish_date, site_name, page_url)
            )
            added += 1
        except Exception as e:
            errors += 1

db.commit()

# Rebuild FTS
db.execute("DELETE FROM gov_search")
db.execute(
    "INSERT INTO gov_search(rowid, title, site_name, summary) "
    "SELECT rowid, title, site_name, substr(content, 1, 500) "
    "FROM gov_raw WHERE content IS NOT NULL AND content != ''"
)
db.commit()

total = db.execute("SELECT COUNT(*) FROM gov_raw").fetchone()[0]
db.close()

os.remove(jsonl_path)
print(f"✅ {label}: +{added} err{errors} total={total}")
