-
Notifications
You must be signed in to change notification settings - Fork 122
Expand file tree
/
Copy pathFirebase.ts
More file actions
57 lines (52 loc) · 1.53 KB
/
Firebase.ts
File metadata and controls
57 lines (52 loc) · 1.53 KB
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
// Initialize Firebase Admin if not already initialized
let firebaseAdmin: typeof import('firebase-admin');
let Database: FirebaseFirestore.Firestore;
let StorageBucket: any;
if (global.firebaseAdmin && global.Database && global.StorageBucket) {
// Use existing global instances
firebaseAdmin = global.firebaseAdmin;
Database = global.Database;
StorageBucket = global.StorageBucket;
} else {
// Initialize Firebase Admin for build time
const admin = require('firebase-admin');
if (!admin.apps.length) {
admin.initializeApp({
credential: admin.credential.cert(require('../../../credentials.json')),
storageBucket: 'millennium-d9ce0.appspot.com',
});
}
firebaseAdmin = admin;
Database = admin.firestore();
StorageBucket = admin.storage().bucket();
}
export { firebaseAdmin, Database, StorageBucket };
export const Firebase = {
Get: () => {
return new Promise<FirebaseFirestore.QuerySnapshot>((resolve) => {
Database.collection('V2')
.get()
.then((snap) => {
resolve(snap);
});
});
},
FromID: (id) => {
return new Promise<FirebaseFirestore.DocumentSnapshot>((resolve, reject) => {
Database.collection('V2')
.doc(id)
.get()
.then((snap) => {
if (!snap.exists) {
reject("document wasn't found.");
}
resolve(snap!);
});
});
},
FromRepository: (owner, repo) => {
return new Promise<FirebaseFirestore.QuerySnapshot>(async (resolve, reject) => {
resolve(await Database.collection('V2').where('github.owner', '==', owner).where('github.repo', '==', repo).get());
});
},
};