|
const mongoose = require('mongoose'); |
|
const mongoMeili = require('../plugins/mongoMeili'); |
|
const messageSchema = mongoose.Schema( |
|
{ |
|
messageId: { |
|
type: String, |
|
unique: true, |
|
required: true, |
|
index: true, |
|
meiliIndex: true, |
|
}, |
|
conversationId: { |
|
type: String, |
|
required: true, |
|
meiliIndex: true, |
|
}, |
|
model: { |
|
type: String, |
|
}, |
|
conversationSignature: { |
|
type: String, |
|
|
|
}, |
|
clientId: { |
|
type: String, |
|
}, |
|
invocationId: { |
|
type: String, |
|
}, |
|
parentMessageId: { |
|
type: String, |
|
|
|
}, |
|
tokenCount: { |
|
type: Number, |
|
}, |
|
refinedTokenCount: { |
|
type: Number, |
|
}, |
|
sender: { |
|
type: String, |
|
required: true, |
|
meiliIndex: true, |
|
}, |
|
text: { |
|
type: String, |
|
required: true, |
|
meiliIndex: true, |
|
}, |
|
refinedMessageText: { |
|
type: String, |
|
}, |
|
isCreatedByUser: { |
|
type: Boolean, |
|
required: true, |
|
default: false, |
|
}, |
|
unfinished: { |
|
type: Boolean, |
|
default: false, |
|
}, |
|
cancelled: { |
|
type: Boolean, |
|
default: false, |
|
}, |
|
error: { |
|
type: Boolean, |
|
default: false, |
|
}, |
|
_meiliIndex: { |
|
type: Boolean, |
|
required: false, |
|
select: false, |
|
default: false, |
|
}, |
|
plugin: { |
|
latest: { |
|
type: String, |
|
required: false, |
|
}, |
|
inputs: { |
|
type: [mongoose.Schema.Types.Mixed], |
|
required: false, |
|
}, |
|
outputs: { |
|
type: String, |
|
required: false, |
|
}, |
|
}, |
|
}, |
|
{ timestamps: true }, |
|
); |
|
|
|
if (process.env.MEILI_HOST && process.env.MEILI_MASTER_KEY) { |
|
messageSchema.plugin(mongoMeili, { |
|
host: process.env.MEILI_HOST, |
|
apiKey: process.env.MEILI_MASTER_KEY, |
|
indexName: 'messages', |
|
primaryKey: 'messageId', |
|
}); |
|
} |
|
|
|
messageSchema.index({ createdAt: 1 }); |
|
|
|
const Message = mongoose.models.Message || mongoose.model('Message', messageSchema); |
|
|
|
module.exports = Message; |
|
|