UNPKG

paradigm-core

Version:
116 lines (87 loc) 2.2 kB
const Highwinds = require('highwinds') const {r} = require('structure-core') class ParadigmHighwinds { /** * ParadigmHighwinds constructor * * @public * @constructor * @param {String} applicationId - ID of application to purge documents for * @param {String} url - base url to use */ constructor(applicationId, url) { this.applicationId = applicationId this.highwinds = new Highwinds({ accountHash: process.env.HIGHWINDS_ACCOUNT_HASH, apiToken: process.env.HIGHWINDS_API_TOKEN, applicationId: process.env.HIGHWINDS_ACCOUNT_ID, url }) } /** * Recursively invalidate an entire host * * @public */ async purgeAll() { return this.purgeUrl('', true) } /** * Invalidate a specific url, optionally recursively * * @public * @param {String} url - url to purge * @param {Boolean} recursive - whether to purge recursively, default=false */ async purgeUrl(url, recursive=false, invalidateOnly=false) { const res = await this.highwinds.purgeByUrl( url, { recursive, invalidateOnly } ) return res } /** * Update lastPurgedAt for all, or specific docIds if provided, published * documents for an application * * @public * @param {Array.String} docIds - optional docIds to limit update to */ async updateLastPurgedAt(docIds=[]) { let query = r.table('documents') if (docIds.length) { query = query.getAll(...docIds) } const res = await query .filter({ "applicationId": this.applicationId, "status": "published" }) .update({lastPurgedAt: r.now()}) if(res.errors && res.errors > 0) { throw res.first_error } } /** * Wrapped call for Highwinds purgeByTag * * @public */ async purgeByTag(tag, options) { const res = await this.highwinds.purgeByTag(tag, options) return res } /** * Wrapped call for Highwinds purgeByManyTags * * @public */ async purgeByManyTags(tags, options) { const res = await this.highwinds.purgeByManyTags(tags, options) return res } } module.exports = ParadigmHighwinds