| | |
| | 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 }; |
| |
|