UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

62 lines (61 loc) 2.87 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 Helper_1 = __importDefault(require("../helper/Helper")); const DatabaseEngine_1 = __importDefault(require("../database/DatabaseEngine")); 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, user) => { const newUsage = { _id: Helper_1.default.uuid(), consumer: consumer.name, startedAt: DSTE_1.default.now(), executedBy: { name: user.name, _id: user._id }, itemsCount: -1, status: 'started', _signature: '' }; 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) => { const update = { itemsCount: itemsCount, status: 'success', 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 }; }; 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;