UNPKG

lexica-dialog-repository

Version:
95 lines 2.52 kB
"use strict"; 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