radlab-ui/webapp/src/utils/firebaseAdmin.ts (23 lines of code) (raw):
import * as firebaseAdmin from "firebase-admin"
import { envOrFail } from "@/utils/env"
import { applicationDefault } from "firebase-admin/app"
import { getFirestore } from "firebase-admin/firestore"
const APP_NAME = "[DEFAULT]"
const projectId = envOrFail(
"NEXT_PUBLIC_FIREBASE_PROJECT_ID",
process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
)
const credential = applicationDefault()
const config: firebaseAdmin.AppOptions = {
credential,
databaseURL: `https://${projectId}.firebaseio.com`,
projectId,
}
const getApp = () => {
return (
firebaseAdmin.apps.find((a) => a?.name === APP_NAME) ||
firebaseAdmin.initializeApp(config)
)
}
const db = getFirestore(getApp())
export { firebaseAdmin, getApp, db }