UNPKG

salesforce-alm

Version:

This package contains tools, and APIs, for an improved salesforce.com developer experience.

99 lines (97 loc) 4.36 kB
"use strict"; /* * Copyright (c) 2020, salesforce.com, inc. * All rights reserved. * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ // Node const util = require("util"); const moment = require("moment"); // Local const Messages = require("../messages"); const messages = Messages(); const STATUS_ERROR = 'Error'; const QUERY = 'SELECT Id, Status, Package2Id, Package2VersionId, Package2Version.SubscriberPackageVersionId, Tag, Branch, ' + 'CreatedDate, Package2Version.HasMetadataRemoved, CreatedById ' + 'FROM Package2VersionCreateRequest ' + '%s' + // WHERE, if applicable 'ORDER BY CreatedDate'; const ERROR_QUERY = "SELECT Message FROM Package2VersionCreateRequestError WHERE ParentRequest.Id = '%s'"; const STATUSES = ['Queued', 'InProgress', 'Success', 'Error']; class PackageVersionCreateRequestApi { constructor(force, org) { this.force = force; this.org = org; } list(flags = {}) { const whereCaluse = this._constructWhere(flags); return this._query(util.format(QUERY, whereCaluse)); } _constructWhere(flags = {}) { const where = []; // filter on created date, days ago: 0 for today, etc if (!util.isNullOrUndefined(flags.createdlastdays)) { if (isNaN(flags.createdlastdays)) { throw new Error(messages.getMessage('invalidDaysNumber', ['createdlastdays', flags.createdlastdays], 'packaging')); } if (parseInt(flags.createdlastdays, 10) < 0) { throw new Error(messages.getMessage('invalidDaysNumber', ['createdlastdays', flags.createdlastdays], 'packaging')); } where.push(`CreatedDate = LAST_N_DAYS:${flags.createdlastdays}`); } // filter on errors if (flags.status) { const foundStatus = STATUSES.find((status) => status.toLowerCase() === flags.status.toLowerCase()); if (util.isNullOrUndefined(foundStatus)) { const args = [flags.status]; STATUSES.forEach((status) => { args.push(status); }); throw new Error(messages.getMessage('invalidStatus', args, 'packaging')); } where.push(`Status = \'${foundStatus}\'`); } return where.length > 0 ? `WHERE ${where.join(' AND ')}` : ''; } async byId(package2VersionCreateRequestId) { const results = await this._query(util.format(QUERY, `WHERE Id = '${package2VersionCreateRequestId}' `)); if (results && results.length === 1 && results[0].Status === STATUS_ERROR) { const queryErrors = await this._queryErrors(package2VersionCreateRequestId); results[0].Error = queryErrors; } return results; } async _query(query) { const queryResult = await this.force.toolingQuery(this.org, query); let results = []; if (queryResult.records) { results = queryResult.records.map((record) => ({ Id: record.Id, Status: record.Status, Package2Id: record.Package2Id, Package2VersionId: record.Package2VersionId, SubscriberPackageVersionId: record.Package2Version != null ? record.Package2Version.SubscriberPackageVersionId : null, Tag: record.Tag, Branch: record.Branch, Error: [], CreatedDate: moment(record.CreatedDate).format('YYYY-MM-DD HH:mm'), HasMetadataRemoved: record.Package2Version != null ? record.Package2Version.HasMetadataRemoved : null, CreatedBy: record.CreatedById, })); } return results; } async _queryErrors(package2VersionCreateRequestId) { const errorResults = []; const queryResult = await this.force.toolingQuery(this.org, util.format(ERROR_QUERY, package2VersionCreateRequestId)); if (queryResult.records) { queryResult.records.forEach((record) => { errorResults.push(record.Message); }); } return errorResults; } } module.exports = PackageVersionCreateRequestApi; //# sourceMappingURL=packageVersionCreateRequestApi.js.map