|
1 | 1 | import * as admin from 'firebase-admin';
|
2 |
| -import * as loadJsonFile from "load-json-file"; |
| 2 | +import loadJsonFile from "load-json-file"; |
| 3 | +import {IFirebaseCredentials} from "./interfaces"; |
3 | 4 |
|
4 | 5 |
|
5 |
| -const getCredentialsFromFile = (credentialsFilename: string): Promise<admin.ServiceAccount> => { |
6 |
| - return loadJsonFile(credentialsFilename); |
| 6 | +const getCredentialsFromFile = (credentialsFilename: string): Promise<IFirebaseCredentials> => { |
| 7 | + return loadJsonFile(credentialsFilename); |
7 | 8 | };
|
8 | 9 |
|
9 |
| -const getFirestoreDBReference = (credentials: admin.ServiceAccount): admin.firestore.Firestore => { |
10 |
| - admin.initializeApp({ |
11 |
| - credential: admin.credential.cert(credentials), |
12 |
| - databaseURL: `https://${(credentials as any).project_id}.firebaseio.com` |
13 |
| - }); |
| 10 | +const getFirestoreDBReference = (credentials: IFirebaseCredentials): admin.firestore.Firestore => { |
| 11 | + admin.initializeApp({ |
| 12 | + credential: admin.credential.cert(credentials as any), |
| 13 | + databaseURL: `https://${(credentials as any).project_id}.firebaseio.com` |
| 14 | + }); |
14 | 15 |
|
15 |
| - return admin.firestore(); |
| 16 | + |
| 17 | + const firestore = admin.firestore(); |
| 18 | + firestore.settings({timestampsInSnapshots: true}); |
| 19 | + return firestore; |
16 | 20 | };
|
17 | 21 |
|
18 | 22 | const getDBReferenceFromPath = (db: admin.firestore.Firestore, dataPath?: string): admin.firestore.Firestore |
|
19 |
| - FirebaseFirestore.DocumentReference | |
20 |
| - FirebaseFirestore.CollectionReference => { |
21 |
| - let startingRef; |
22 |
| - if (dataPath) { |
23 |
| - const parts = dataPath.split('/').length; |
24 |
| - const isDoc = parts % 2 === 0; |
25 |
| - startingRef = isDoc ? db.doc(dataPath) : db.collection(dataPath); |
26 |
| - } else { |
27 |
| - startingRef = db; |
28 |
| - } |
29 |
| - return startingRef; |
| 23 | + FirebaseFirestore.DocumentReference | |
| 24 | + FirebaseFirestore.CollectionReference => { |
| 25 | + let startingRef; |
| 26 | + if (dataPath) { |
| 27 | + const parts = dataPath.split('/').length; |
| 28 | + const isDoc = parts % 2 === 0; |
| 29 | + startingRef = isDoc ? db.doc(dataPath) : db.collection(dataPath); |
| 30 | + } else { |
| 31 | + startingRef = db; |
| 32 | + } |
| 33 | + return startingRef; |
30 | 34 | };
|
31 | 35 |
|
32 | 36 | const isLikeDocument = (ref: admin.firestore.Firestore |
|
33 |
| - FirebaseFirestore.DocumentReference | |
34 |
| - FirebaseFirestore.CollectionReference): ref is FirebaseFirestore.DocumentReference => { |
35 |
| - return (<FirebaseFirestore.DocumentReference>ref).collection !== undefined; |
| 37 | + FirebaseFirestore.DocumentReference | |
| 38 | + FirebaseFirestore.CollectionReference): ref is FirebaseFirestore.DocumentReference => { |
| 39 | + return (<FirebaseFirestore.DocumentReference>ref).collection !== undefined; |
36 | 40 | };
|
37 | 41 |
|
38 | 42 | const isRootOfDatabase = (ref: admin.firestore.Firestore |
|
39 |
| - FirebaseFirestore.DocumentReference | |
40 |
| - FirebaseFirestore.CollectionReference): ref is admin.firestore.Firestore => { |
41 |
| - return (<admin.firestore.Firestore>ref).batch !== undefined; |
| 43 | + FirebaseFirestore.DocumentReference | |
| 44 | + FirebaseFirestore.CollectionReference): ref is admin.firestore.Firestore => { |
| 45 | + return (<admin.firestore.Firestore>ref).batch !== undefined; |
42 | 46 | };
|
43 | 47 |
|
44 | 48 | const sleep = (timeInMS: number): Promise<void> => new Promise(resolve => setTimeout(resolve, timeInMS));
|
45 | 49 |
|
46 | 50 | export {
|
47 |
| - getCredentialsFromFile, |
48 |
| - getFirestoreDBReference, |
49 |
| - getDBReferenceFromPath, |
50 |
| - isLikeDocument, |
51 |
| - isRootOfDatabase, |
52 |
| - sleep |
| 51 | + getCredentialsFromFile, |
| 52 | + getFirestoreDBReference, |
| 53 | + getDBReferenceFromPath, |
| 54 | + isLikeDocument, |
| 55 | + isRootOfDatabase, |
| 56 | + sleep |
53 | 57 | };
|
0 commit comments