| |
| const admin = require("firebase-admin"); |
| require("dotenv").config(); |
|
|
| let db = null; |
|
|
| function initFirebase() { |
| if (admin.apps.length > 0) return admin.app(); |
|
|
| |
| const rawKey = process.env.FIREBASE_PRIVATE_KEY || ""; |
| const privateKey = rawKey.includes("\\n") |
| ? rawKey.replace(/\\n/g, "\n") |
| : rawKey; |
|
|
| if (!process.env.FIREBASE_PROJECT_ID) { |
| console.error("⚠️ FIREBASE_PROJECT_ID tidak ditemukan! Set di HF Spaces Secrets."); |
| return null; |
| } |
|
|
| const serviceAccount = { |
| type: "service_account", |
| project_id: process.env.FIREBASE_PROJECT_ID, |
| private_key_id: process.env.FIREBASE_PRIVATE_KEY_ID, |
| private_key: privateKey, |
| client_email: process.env.FIREBASE_CLIENT_EMAIL, |
| client_id: process.env.FIREBASE_CLIENT_ID, |
| auth_uri: "https://accounts.google.com/o/oauth2/auth", |
| token_uri: "https://oauth2.googleapis.com/token", |
| }; |
|
|
| admin.initializeApp({ |
| credential: admin.credential.cert(serviceAccount), |
| databaseURL: process.env.FIREBASE_DATABASE_URL, |
| }); |
|
|
| console.log("✅ Firebase initialized — project:", process.env.FIREBASE_PROJECT_ID); |
| return admin.app(); |
| } |
|
|
| function getDB() { |
| if (!db) { |
| initFirebase(); |
| db = admin.firestore(); |
| db.settings({ ignoreUndefinedProperties: true }); |
| } |
| return db; |
| } |
|
|
| module.exports = { initFirebase, getDB, admin }; |
|
|