Options
All
  • Public
  • Public/Protected
  • All
Menu

Module "jobs"

Index

Variables

Const db

db: Firestore = admin.firestore()

firestore instance

Const jobRunner

jobRunner: CloudFunction<QueryDocumentSnapshot> = functions// .region('europe-west1')// .runWith({ memory: '1GB', timeoutSeconds: 120 }).firestore.document('jobs/{jobId}')// tslint:disable-next-line:promise-function-async.onCreate((snap: DocumentSnapshot, context: functions.EventContext) => {const jobData = snap.data() as JobModel;jobData.id = snap.id;if (!jobData.collections) {jobData.collections = ['pages', 'articles', 'blogs', 'jokes', 'quotes', 'taxonomy'];}if (!jobData.cultureCodes) {jobData.cultureCodes = FUNCTIONS_CONFIG.supportedCultureCodes;}if (!jobData.limit) {jobData.limit = 5000;}const startedAt = new Date();console.log(moment(startedAt).format('YYYY.MM.DD HH:mm:ss'), 'jobRunner is started! jobData:', jobData);return snap.ref.set({started: admin.firestore.FieldValue.serverTimestamp()}, {merge: true}).then(async () => {if (jobData.actionKey === 'generateSiteMap') {return generateSiteMap(jobData);}if (jobData.actionKey === 'generateSEOData') {return generateSEOData(jobData);}if (jobData.actionKey === 'generateJsonLDs') {return generateJsonLDs(jobData);}if (jobData.actionKey === 'generateLocales') {return generateLocales(jobData);}if (jobData.actionKey === 'generateDescription') {return generateDescription(jobData);}if (jobData.actionKey === 'fixPublicFilesPermissions') {return fixPublicFilesPermissions(jobData);}if (jobData.actionKey === 'clearCaches') {return clearCaches(jobData);}if (jobData.actionKey === 'recalculateOrderNo') {return recalculateOrderNo(jobData);}if (jobData.actionKey === 'fixTaxonomyMaps') {return fixTaxonomyMaps(jobData);}if (jobData.actionKey === 'backupFirestore') {return backupFirestore(jobData);}if (jobData.actionKey === 'playAtPlayground') {return playAtPlayground(jobData);}}).then(async value => {const finishedAt = new Date();const duration = moment.duration(moment(finishedAt).diff(moment(startedAt))).asSeconds();console.log(moment(finishedAt).format('YYYY.MM.DD HH:mm:ss'),'jobRunner is finished! duration:', duration, 'result:', value);return snap.ref.set({result: value, isSucceed: true, finished: admin.firestore.FieldValue.serverTimestamp(), duration},{merge: true}).then(() => ({result: value, isSucceed: true}));}).catch(async err => {const finishedAt = new Date();const duration = moment.duration(moment(finishedAt).diff(moment(startedAt))).asSeconds();console.error(moment(finishedAt).format('YYYY.MM.DD HH:mm:ss'),'jobRunner is failed! duration:', duration, 'error:', err);return snap.ref.set({result: {message: err.toString(), stack: err.stack}, isSucceed: false,finished: admin.firestore.FieldValue.serverTimestamp(), duration},{merge: true}).then(() => ({result: {message: err.toString(), stack: err.stack}, isSucceed: false}));});})

job runner function

Functions

Const backupFirestore

  • backupFirestore(jobData: JobModel): Promise<any>
  • backup firestore to storage

    Parameters

    Returns Promise<any>

Const clearCaches

  • clearCaches(jobData: JobModel): Promise<any>

Const fixPublicFilesPermissions

  • fixPublicFilesPermissions(jobData: JobModel): Promise<any>
  • fix public files permissions on storage

    Parameters

    Returns Promise<any>

Const fixTaxonomyMaps

  • fixTaxonomyMaps(jobData: JobModel): Promise<any>
  • fix taxonomy leftovers

    Parameters

    Returns Promise<any>

Const generateDescription

  • generateDescription(jobData: JobModel): Promise<any>
  • generate description

    Parameters

    Returns Promise<any>

Const generateJsonLDs

  • generateJsonLDs(jobData: JobModel): Promise<any>

Const generateLocales

  • generateLocales(jobData: JobModel): Promise<any>

Const generateSEOData

  • generateSEOData(jobData: JobModel): Promise<any>
  • generate SEO data

    Parameters

    Returns Promise<any>

Const generateSiteMap

  • generateSiteMap(jobData: JobModel): Promise<any>
  • generate site map

    Parameters

    Returns Promise<any>

Const recalculateOrderNo

  • recalculateOrderNo(jobData: JobModel): Promise<any>
  • recalculate order no of all of documents

    Parameters

    Returns Promise<any>

Generated using TypeDoc