# services/supabase_service.py

from dotenv import load_dotenv
import os
from supabase import create_client, Client

_supabase: Client = None  # Lazy 초기화용 전역 변수

def get_supabase() -> Client:
    global _supabase
    if _supabase is None:
        load_dotenv()

        SUPABASE_URL = os.getenv("SUPABASE_URL")
        SUPABASE_KEY = os.getenv("SUPABASE_KEY")

        if not SUPABASE_URL or not SUPABASE_KEY:
            raise ValueError("❌ SUPABASE_URL 또는 SUPABASE_KEY 환경변수가 설정되지 않았습니다.")

        print("[DEBUG] SUPABASE_URL =", SUPABASE_URL)
        print("[DEBUG] SUPABASE_KEY =", SUPABASE_KEY[:10], "...")

        _supabase = create_client(SUPABASE_URL, SUPABASE_KEY)

    return _supabase

# ✅ 구독 등록
def upsert_subscription(table, chat_id, first_name):
    return get_supabase().table(table).upsert({
        "chat_id": chat_id,
        "first_name": first_name
    }).execute()

# ✅ 구독 해제
def delete_subscription(table, chat_id):
    return get_supabase().table(table).delete().eq("chat_id", chat_id).execute()

# ✅ 이름 또는 부서 검색
def search_name(table: str, keyword: str):
    try:
        print("[DEBUG] 검색 시작:", keyword)
        sb = get_supabase()

        result = sb.table(table) \
            .select("*") \
            .ilike("name", f"%{keyword}%") \
            .execute()

        if result.data:
            return result.data

        result = sb.table(table) \
            .select("*") \
            .ilike("department", f"%{keyword}%") \
            .execute()

        return result.data
    except Exception as e:
        print(f"[❌] Supabase 검색 오류: {e}")
        return []
