All files / src playground.ts

100% Statements 23/23
100% Branches 4/4
100% Functions 12/12
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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  1x               1x           1x 1x 1x 1x   2x 12x 12x 12x 56x 56x 56x 2x   2x   2x 2x           54x           1x      
import { Storage } from '@google-cloud/storage';
import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';
import { DocumentSnapshot } from 'firebase-functions/lib/providers/firestore';
 
import { FUNCTIONS_CONFIG } from './config';
import { JobModel } from './models/';
 
/** firestore instance */
const db = admin.firestore();
 
/**
 * KEEP THIS FUNCTION CLEAN - DO NOT COMMIT YOUR CHANGES
 * do one kind of job or just play at playground
 */
export const playAtPlayground = async (jobData: JobModel): Promise<any> => {
    console.log('playAtPlayground is started');
    let processedDocCount = 0;
    const processedDocs = [];
 
    return Promise.all(jobData.cultureCodes.map(async cultureCode =>
        Promise.all(jobData.collections.map(async collectionPrefix =>
            db.collection(`${collectionPrefix}_${cultureCode}`).get()
                .then(async mainDocsSnapshot =>
                    Promise.all(mainDocsSnapshot.docs.map(async mainDoc => {
                        const mData = mainDoc.data();
                        if (mData.hasOwnProperty('playWithMe') || jobData.overwrite) {
                            const playData = {};
 
                            return mainDoc.ref.set({playData}, {merge: true})
                                .then(() => {
                                    processedDocCount++;
                                    processedDocs.push({
                                        path: `${collectionPrefix}_${cultureCode}/${mainDoc.id}`,
                                        old: mData.playData, new: playData});
                                });
                        }
 
                        return Promise.resolve();
                    }))
                )
        ))
    ))
        .then(() =>
            Promise.resolve({processedDocCount, processedDocs})
        );
};