origintrail-node
Version:
OriginTrail Node - Decentralized Knowledge Graph Node Library
121 lines (109 loc) • 3.36 kB
JavaScript
import Sequelize from 'sequelize';
import { COMMAND_STATUS } from '../../../../../constants/constants.js';
class CommandRepository {
constructor(models) {
this.sequelize = models.sequelize;
this.model = models.commands;
}
async updateCommand(update, options) {
await this.model.update(update, options);
}
async destroyCommand(name, options) {
await this.model.destroy({
where: {
name: { [Sequelize.Op.eq]: name },
},
...options,
});
}
async createCommand(command, options) {
return this.model.create(command, options);
}
async getCommandsWithStatus(statusArray, excludeNameArray, options) {
return this.model.findAll({
where: {
status: {
[Sequelize.Op.in]: statusArray,
},
name: { [Sequelize.Op.notIn]: excludeNameArray },
},
...options,
});
}
async getCommandWithId(id, options) {
return this.model.findOne({
where: {
id,
},
...options,
});
}
async removeCommands(ids, options) {
await this.model.destroy({
where: {
id: { [Sequelize.Op.in]: ids },
},
...options,
});
}
async findFinalizedCommands(timestamp, limit, options) {
return this.model.findAll({
where: {
status: {
[Sequelize.Op.in]: [
COMMAND_STATUS.COMPLETED,
COMMAND_STATUS.FAILED,
COMMAND_STATUS.EXPIRED,
COMMAND_STATUS.UNKNOWN,
],
},
startedAt: { [Sequelize.Op.lte]: timestamp },
},
order: [['startedAt', 'asc']],
raw: true,
limit,
...options,
});
}
async findAndRemoveFinalizedCommands(timestamp, limit, options) {
return this.model.destroy({
where: {
[Sequelize.Op.or]: [
{
status: {
[Sequelize.Op.in]: [
COMMAND_STATUS.COMPLETED,
COMMAND_STATUS.FAILED,
COMMAND_STATUS.EXPIRED,
COMMAND_STATUS.UNKNOWN,
],
},
},
{
startedAt: { [Sequelize.Op.lte]: timestamp },
},
],
},
limit,
...options,
});
}
async findUnfinalizedCommandsByName(name, options) {
return this.model.findAll({
where: {
name,
status: {
[Sequelize.Op.notIn]: [
COMMAND_STATUS.COMPLETED,
COMMAND_STATUS.FAILED,
COMMAND_STATUS.EXPIRED,
COMMAND_STATUS.UNKNOWN,
],
},
},
raw: true,
...options,
});
}
}
export default CommandRepository;