UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

66 lines (65 loc) 3.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Affirm_1 = __importDefault(require("../../core/Affirm")); const DSTE_1 = __importDefault(require("../../core/dste/DSTE")); const DatabaseEngine_1 = __importDefault(require("../../database/DatabaseEngine")); const Helper_1 = __importDefault(require("../../helper/Helper")); const Settings_1 = __importDefault(require("../../helper/Settings")); class UsageManagerClass { constructor() { /** * TODO: I need to group the usage stats into a bucket daily. When and how I do it is still a question... */ this.getTodayBucketId = (consumer) => { (0, Affirm_1.default)(consumer, `Invalid consumer`); const now = DSTE_1.default.now(); return `${consumer.name}_${now.getUTCFullYear()}_${now.getUTCMonth()}_${now.getUTCDate()}`.toLowerCase(); }; this.startUsage = (consumer, details) => { const { user, invokedBy } = details; const newUsage = { _id: Helper_1.default.uuid(), consumer: consumer.name, startedAt: DSTE_1.default.now(), executedBy: user, itemsCount: -1, status: 'started', invokedBy: invokedBy !== null && invokedBy !== void 0 ? invokedBy : 'UNKNOWN', _signature: '', stats: null }; if (Helper_1.default.isDev()) return { usageId: newUsage._id, usage: Promise.resolve(newUsage) }; const updateRes = DatabaseEngine_1.default.upsert(Settings_1.default.db.collections.usage, newUsage._id, newUsage); return { usageId: newUsage._id, usage: updateRes }; }; this.endUsage = (usageId, itemsCount, stats) => { const update = { itemsCount: itemsCount, status: 'success', finishedAt: DSTE_1.default.now(), stats }; if (Helper_1.default.isDev()) return { usageId: null, usage: Promise.resolve(update) }; const updateRes = DatabaseEngine_1.default.upsert(Settings_1.default.db.collections.usage, usageId, update); return { usageId: usageId, usage: updateRes }; }; this.failUsage = (usageId, error) => { const update = { status: 'failed', error: error, finishedAt: DSTE_1.default.now() }; if (Helper_1.default.isDev()) return { usageId: null, usage: Promise.resolve(update) }; const updateRes = DatabaseEngine_1.default.upsert(Settings_1.default.db.collections.usage, usageId, update); return { usageId: usageId, usage: updateRes }; }; } } const UsageManager = new UsageManagerClass(); exports.default = UsageManager;