lexica-dialog-repository
Version:
95 lines • 2.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const mongoose_1 = require("mongoose");
const CRUDRepository_1 = require("./CRUDRepository");
const Ticket_1 = require("lexica-dialog-model/dist/Ticket");
const IntentRepository_1 = require("./IntentRepository");
const payload = new mongoose_1.Schema({
action: {
enum: [
Ticket_1.TicketType.ADD,
Ticket_1.TicketType.DELETE,
Ticket_1.TicketType.UPDATE,
],
index: true,
required: true,
type: String,
},
category: {
required() {
return this.action === Ticket_1.TicketType.ADD;
},
type: String,
},
responses: {
required() {
return this.action === Ticket_1.TicketType.ADD;
},
type: [IntentRepository_1.response],
},
sampleQuestion: {
required() {
return this.action === Ticket_1.TicketType.ADD || this.action === Ticket_1.TicketType.UPDATE;
},
type: String,
},
subCategory: {
required() {
return this.action === Ticket_1.TicketType.ADD;
},
type: String,
},
});
const ticket = new mongoose_1.Schema({
date: {
index: true,
required: true,
type: Date,
},
intentId: {
type: String,
},
origin: {
required() {
return typeof this.intentId === 'string';
},
type: mongoose_1.Schema.Types.Mixed,
},
payload: {
required: true,
type: payload,
},
status: {
enum: [
Ticket_1.TicketStatus.COMPLETED,
Ticket_1.TicketStatus.PENDING,
],
index: true,
required: true,
type: String,
},
uni: {
index: true,
required: true,
type: String,
},
userId: {
index: true,
required: true,
type: String,
},
});
class TicketRepository extends CRUDRepository_1.default {
constructor(mongoConnection) {
super(mongoConnection.model('Ticket', ticket, 'Tickets'));
}
async findByUniAndStatus(status, uni) {
return this.model.find({ uni, status });
}
async findByUniAndStatusAndIntentId(intentId, status, uni) {
return this.model.findOne({ uni, intentId, status });
}
}
exports.TicketRepository = TicketRepository;
exports.ticketRepository = new TicketRepository(mongoose_1.connection);
//# sourceMappingURL=TicketRepository.js.map