UNPKG

@grouparoo/core

Version:
152 lines (151 loc) 5.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExportRetryById = exports.ExportsRetryFailed = exports.ExportView = exports.ExportsTotals = exports.ExportsList = void 0; const sequelize_1 = require("sequelize"); const authenticatedAction_1 = require("../classes/actions/authenticatedAction"); const Export_1 = require("../models/Export"); const export_1 = require("../modules/ops/export"); const Destination_1 = require("../models/Destination"); const GrouparooRecord_1 = require("../models/GrouparooRecord"); const apiData_1 = require("../modules/apiData"); class ExportsList extends authenticatedAction_1.AuthenticatedAction { constructor() { super(...arguments); this.name = "exports:list"; this.description = "list exports"; this.outputExample = {}; this.permission = { topic: "export", mode: "read" }; this.inputs = { recordId: { required: false }, destinationId: { required: false }, exportProcessorId: { required: false }, limit: { required: true, default: 100, formatter: apiData_1.APIData.ensureNumber }, offset: { required: true, default: 0, formatter: apiData_1.APIData.ensureNumber }, state: { required: false }, order: { required: false, formatter: apiData_1.APIData.ensureArray, default: [["createdAt", "desc"]], }, }; } async runWithinTransaction({ params }) { const where = {}; if (params.recordId) { where["recordId"] = params.recordId; } if (params.destinationId) { where["destinationId"] = params.destinationId; } if (params.exportProcessorId) { where["exportProcessorId"] = params.exportProcessorId; } if (params.state) { where["state"] = params.state; } const { rows: _exports, count: total } = await Export_1.Export.findAndCountAll({ where, include: [ { model: Destination_1.Destination, where: { state: { [sequelize_1.Op.ne]: "draft" } }, required: false, }, { model: GrouparooRecord_1.GrouparooRecord, attributes: ["modelId"], }, ], limit: params.limit, offset: params.offset, order: params.order, }); return { total, exports: await Promise.all(_exports.map((exp) => exp.apiData())), }; } } exports.ExportsList = ExportsList; class ExportsTotals extends authenticatedAction_1.AuthenticatedAction { constructor() { super(...arguments); this.name = "exports:totals"; this.description = "count exports by state"; this.outputExample = {}; this.permission = { topic: "export", mode: "read" }; this.inputs = { recordId: { required: false }, destinationId: { required: false }, }; } async runWithinTransaction({ params, }) { const where = {}; if (params.recordId) { where["recordId"] = params.recordId; } if (params.destinationId) { where["destinationId"] = params.destinationId; } return { totals: await export_1.ExportOps.totals(where) }; } } exports.ExportsTotals = ExportsTotals; class ExportView extends authenticatedAction_1.AuthenticatedAction { constructor() { super(...arguments); this.name = "export:view"; this.description = "view an export"; this.outputExample = {}; this.permission = { topic: "export", mode: "read" }; this.inputs = { id: { required: true }, }; } async runWithinTransaction({ params }) { const _export = await Export_1.Export.findById(params.id); return { export: await _export.apiData() }; } } exports.ExportView = ExportView; class ExportsRetryFailed extends authenticatedAction_1.AuthenticatedAction { constructor() { super(...arguments); this.name = "exports:retryFailures"; this.description = "retry failed exports within a timeframe"; this.permission = { topic: "destination", mode: "write" }; this.inputs = { destinationId: { required: false }, startTimestamp: { required: true, formatter: apiData_1.APIData.ensureNumber }, endTimestamp: { required: true, formatter: apiData_1.APIData.ensureNumber }, preview: { required: false, default: false, formatter: apiData_1.APIData.ensureBoolean, }, }; } async runWithinTransaction({ params, }) { const count = await Export_1.Export.retryFailed(new Date(params.startTimestamp), new Date(params.endTimestamp), params.destinationId ? await Destination_1.Destination.findById(params.destinationId) : null, !params.preview); return { count }; } } exports.ExportsRetryFailed = ExportsRetryFailed; class ExportRetryById extends authenticatedAction_1.AuthenticatedAction { constructor() { super(...arguments); this.name = "export:retry"; this.description = "Retry failed or canceled export by id"; this.permission = { topic: "destination", mode: "write" }; this.inputs = { exportId: { required: true }, }; } async runWithinTransaction({ params, }) { const count = await Export_1.Export.retryById(params.exportId); return { count }; } } exports.ExportRetryById = ExportRetryById;