@marteye/studio-cli
Version:
CLI for MartEye Studio API
114 lines (110 loc) • 4.87 kB
JavaScript
;
var commander = require('commander');
var studio = require('../utils/studio.js');
var output = require('../utils/output.js');
function salesCommand() {
const sales = new commander.Command('sales')
.description('Sales operations');
sales
.command('list <market-id>')
.description('List sales within date range')
.option('--start <date>', 'Start date (YYYY-MM-DD)')
.option('--end <date>', 'End date (YYYY-MM-DD)')
.action(async (marketId, options, command) => {
const globalOptions = command.optsWithGlobals ? command.optsWithGlobals() : command.parent?.parent?.opts() || {};
try {
const studio$1 = studio.createStudioInstance(globalOptions);
const result = await studio$1.sales.list(marketId, {
start: options.start,
end: options.end
});
output.output(result.sales, globalOptions);
}
catch (err) {
output.error(err.message, err.response?.data);
process.exit(1);
}
});
sales
.command('get <market-id> <sale-id>')
.description('Get specific sale details')
.action(async (marketId, saleId, _options, command) => {
const globalOptions = command.optsWithGlobals ? command.optsWithGlobals() : command.parent?.parent?.opts() || {};
try {
const studio$1 = studio.createStudioInstance(globalOptions);
const result = await studio$1.sales.get(marketId, saleId);
output.output(result, globalOptions);
}
catch (err) {
output.error(err.message, err.response?.data);
process.exit(1);
}
});
sales
.command('create <market-id>')
.description('Create a new sale')
.requiredOption('--name <name>', 'Sale name')
.requiredOption('--starts-at <datetime>', 'Start date and time')
.option('--product-codes <codes...>', 'Available product codes')
.option('--recurring <type>', 'Recurring type: Weekly, Bi-weekly, Monthly')
.option('--type <type>', 'Sale type: LIVE or TIMED')
.option('--location <location>', 'Sale location')
.option('--description <description>', 'Sale description')
.action(async (marketId, options, command) => {
const globalOptions = command.optsWithGlobals ? command.optsWithGlobals() : command.parent?.parent?.opts() || {};
try {
const studio$1 = studio.createStudioInstance(globalOptions);
const saleData = {
name: options.name,
startsAt: options.startsAt,
availableProductCodes: options.productCodes || [],
recurring: options.recurring || null,
martEyeSaleType: options.type || null,
location: options.location || null,
description: options.description || null,
image: null,
cover: null
};
const result = await studio$1.sales.create(marketId, saleData);
output.success(`Sale ID: ${result.saleId}`);
if (globalOptions.output !== 'json') {
output.output(result, globalOptions);
}
}
catch (err) {
output.error(err.message, err.response?.data);
process.exit(1);
}
});
sales
.command('update <market-id> <sale-id>')
.description('Update sale information')
.option('--name <name>', 'Sale name')
.option('--starts-at <datetime>', 'Start date and time (ISO 8601 format)')
.option('--recurring <type>', 'Recurring type: Weekly, Bi-weekly, Monthly')
.option('--default-product-code <code>', 'Default product code')
.action(async (marketId, saleId, _options, command) => {
const globalOptions = command.optsWithGlobals ? command.optsWithGlobals() : command.parent?.parent?.opts() || {};
try {
const studio$1 = studio.createStudioInstance(globalOptions);
const updateData = {};
if (_options.name)
updateData.name = _options.name;
if (_options.startsAt)
updateData.startsAt = _options.startsAt;
if (_options.recurring)
updateData.recurring = _options.recurring;
if (_options.defaultProductCode)
updateData.defaultProductCode = _options.defaultProductCode;
const result = await studio$1.sales.update(marketId, saleId, updateData);
output.output(result, globalOptions);
}
catch (err) {
output.error(err.message, err.response?.data);
process.exit(1);
}
});
return sales;
}
exports.salesCommand = salesCommand;
//# sourceMappingURL=sales.js.map