Spaces:
Running
Running
File size: 1,797 Bytes
92bfe31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | """
Seed Firestore curriculum collection from static data.
Run this ONCE to migrate static curriculum to Firestore:
python backend/scripts/seed_curriculum.py
After seeding, the curriculum API will read from Firestore.
"""
import logging
import json
import os
import sys
from pathlib import Path
# Add backend to path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from services.curriculum_service import _STATIC_SUBJECTS
logger = logging.getLogger(__name__)
def seed_curriculum():
"""Seed curriculum subjects to Firestore."""
try:
import firebase_admin
from firebase_admin import firestore, credentials
# Initialize Firebase
svc_account = os.getenv("FIREBASE_SERVICE_ACCOUNT_JSON")
if svc_account:
sa_creds = credentials.Certificate(json.loads(svc_account))
firebase_admin.initialize_app(sa_creds)
else:
firebase_admin.initialize_app()
db = firestore.client()
print("Firebase initialized")
except Exception as e:
print(f"Failed to initialize Firebase: {e}")
return
# Seed new subjects
subjects_ref = db.collection("subjects")
count = 0
for subject in _STATIC_SUBJECTS:
doc_ref = subjects_ref.document(subject["id"])
doc_ref.set(subject)
count += 1
print(f" Seeded: {subject['id']} - {subject['name']} ({len(subject.get('topics', []))} topics)")
print(f"\nSeeded {count} subjects to Firestore")
print("\nCurriculum is now available at:")
print(" GET /api/curriculum/subjects")
print(" GET /api/curriculum/subjects/{id}")
print(" GET /api/curriculum/subjects/{id}/topics")
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
seed_curriculum() |