
import json, psycopg
from datetime import datetime, timezone

PG_CONN_STR = "host=127.0.0.1 port=5432 dbname=dopebling_app user=dopebling_idgapp password=Romania95!"
conn = psycopg.connect(PG_CONN_STR)
cur = conn.cursor()

cur.execute("SELECT id, data FROM col_idg_reborn_users;")
reborn_users = cur.fetchall()

migrated = 0
now_iso = datetime.now(timezone.utc).isoformat()

for row in reborn_users:
    rid, rdata = row
    uid = str(rdata.get('id', ''))
    if not uid: continue
    
    # check if exists
    cur.execute("SELECT 1 FROM col_users WHERE data->>'id' = %s", (uid,))
    if cur.fetchone():
        continue
        
    username = rdata.get('username') or f"User_{uid}"
    user_doc = {
        "id": uid,
        "username": username,
        "username_lower": username.lower(),
        "email": rdata.get('email') or f"{uid}@archive.local",
        "password_hash": rdata.get('password_hash', 'ARCHIVED'),
        "role": rdata.get('role', 'user'),
        "created_at": rdata.get('created_at', now_iso),
        "joined_at": rdata.get('joined_at') or rdata.get('created_at', now_iso),
        "last_seen": rdata.get('last_seen', now_iso),
        "is_vip": False,
        "points": rdata.get('points', 0),
        "message_count": rdata.get('message_count', 0),
        "bio": rdata.get('bio', ''),
        "avatar_url": rdata.get('avatar_url', ''),
        "signature": rdata.get('signature', ''),
        "location": rdata.get('location', ''),
        "group_ids": rdata.get('group_ids', [])
    }
    
    cur.execute("INSERT INTO col_users (id, data) VALUES (%s, %s)", (uid, json.dumps(user_doc)))
    migrated += 1

conn.commit()
print(f"Migrated {migrated} users to col_users!")
