/** * prod Firebase Admin 부트스트랩(side-effect 모듈). * * 반드시 src/* 모듈보다 "먼저" import해야 한다 — 그래야 src/firebase의 * initializeApp()가 재실행되지 않고 여기서 만든 앱(projectId·databaseURL 지정)을 * 재사용한다. 자격증명은 ADC(applicationDefault)를 쓴다: * gcloud auth application-default login * 또는 GOOGLE_APPLICATION_CREDENTIALS=<서비스계정.json> * * databaseURL은 반드시 **리전을 포함**해야 한다. 리전 없는 기본 호스트 * (`...firebaseio.com`)로 붙으면 SDK가 "Database lives in a different region"만 * 경고하고 다른 리전의 (존재하지 않는) DB를 보게 되어, 조회가 조용히 빈 결과를 * 돌려준다 — 그 값을 사실로 믿는 스크립트는 위험한 판단을 내릴 수 있다. * 리전은 FIREBASE_DATABASE_REGION, 전체 URL은 FIREBASE_DATABASE_URL로 덮어쓴다. */ import { initializeApp, getApps } from "firebase-admin/app"; const projectId = process.env.FIREBASE_PROJECT ?? process.env.GCLOUD_PROJECT ?? "mmday-panit"; const databaseRegion = process.env.FIREBASE_DATABASE_REGION ?? "asia-southeast1"; const databaseURL = process.env.FIREBASE_DATABASE_URL ?? `https://${projectId}-default-rtdb.${databaseRegion}.firebasedatabase.app`; if (getApps().length === 0) { initializeApp({ projectId, databaseURL }); } export const BOOTSTRAP_PROJECT = projectId;