32 lines
916 B
Python
32 lines
916 B
Python
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
from supabase import create_client
|
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent
|
|
|
|
|
|
def main() -> None:
|
|
load_dotenv(BASE_DIR / ".env")
|
|
url = os.getenv("SUPABASE_URL", "").strip()
|
|
key = (
|
|
os.getenv("SUPABASE_SECRET_KEY", "").strip()
|
|
or os.getenv("SUPABASE_SERVICE_ROLE_KEY", "").strip()
|
|
)
|
|
table = os.getenv("SUPABASE_ARTICLES_TABLE", "articles").strip()
|
|
if not url or not key:
|
|
raise SystemExit("Add SUPABASE_URL and SUPABASE_SECRET_KEY to backend/.env first.")
|
|
|
|
posts = json.loads((BASE_DIR / "data" / "posts.json").read_text(encoding="utf-8"))
|
|
response = create_client(url, key).table(table).upsert(posts, on_conflict="slug").execute()
|
|
print(f"Seeded {len(response.data or [])} articles into {table}.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|