| | import mongoose, { Schema } from 'mongoose'; |
| | import type { IMessage } from '~/types/message'; |
| |
|
| | const messageSchema: Schema<IMessage> = new Schema( |
| | { |
| | messageId: { |
| | type: String, |
| | unique: true, |
| | required: true, |
| | index: true, |
| | meiliIndex: true, |
| | }, |
| | conversationId: { |
| | type: String, |
| | index: true, |
| | required: true, |
| | meiliIndex: true, |
| | }, |
| | user: { |
| | type: String, |
| | index: true, |
| | required: true, |
| | default: null, |
| | meiliIndex: true, |
| | }, |
| | model: { |
| | type: String, |
| | default: null, |
| | }, |
| | endpoint: { |
| | type: String, |
| | }, |
| | conversationSignature: { |
| | type: String, |
| | }, |
| | clientId: { |
| | type: String, |
| | }, |
| | invocationId: { |
| | type: Number, |
| | }, |
| | parentMessageId: { |
| | type: String, |
| | }, |
| | tokenCount: { |
| | type: Number, |
| | }, |
| | summaryTokenCount: { |
| | type: Number, |
| | }, |
| | sender: { |
| | type: String, |
| | meiliIndex: true, |
| | }, |
| | text: { |
| | type: String, |
| | meiliIndex: true, |
| | }, |
| | summary: { |
| | type: String, |
| | }, |
| | isCreatedByUser: { |
| | type: Boolean, |
| | required: true, |
| | default: false, |
| | }, |
| | unfinished: { |
| | type: Boolean, |
| | default: false, |
| | }, |
| | error: { |
| | type: Boolean, |
| | default: false, |
| | }, |
| | finish_reason: { |
| | type: String, |
| | }, |
| | feedback: { |
| | type: { |
| | rating: { |
| | type: String, |
| | enum: ['thumbsUp', 'thumbsDown'], |
| | required: true, |
| | }, |
| | tag: { |
| | type: mongoose.Schema.Types.Mixed, |
| | required: false, |
| | }, |
| | text: { |
| | type: String, |
| | required: false, |
| | }, |
| | }, |
| | default: undefined, |
| | required: false, |
| | }, |
| | _meiliIndex: { |
| | type: Boolean, |
| | required: false, |
| | select: false, |
| | default: false, |
| | }, |
| | files: { type: [{ type: mongoose.Schema.Types.Mixed }], default: undefined }, |
| | plugin: { |
| | type: { |
| | latest: { |
| | type: String, |
| | required: false, |
| | }, |
| | inputs: { |
| | type: [mongoose.Schema.Types.Mixed], |
| | required: false, |
| | default: undefined, |
| | }, |
| | outputs: { |
| | type: String, |
| | required: false, |
| | }, |
| | }, |
| | default: undefined, |
| | }, |
| | plugins: { type: [{ type: mongoose.Schema.Types.Mixed }], default: undefined }, |
| | content: { |
| | type: [{ type: mongoose.Schema.Types.Mixed }], |
| | default: undefined, |
| | meiliIndex: true, |
| | }, |
| | thread_id: { |
| | type: String, |
| | }, |
| | |
| | iconURL: { |
| | type: String, |
| | }, |
| | metadata: { type: mongoose.Schema.Types.Mixed }, |
| | attachments: { type: [{ type: mongoose.Schema.Types.Mixed }], default: undefined }, |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | expiredAt: { |
| | type: Date, |
| | }, |
| | }, |
| | { timestamps: true }, |
| | ); |
| |
|
| | messageSchema.index({ expiredAt: 1 }, { expireAfterSeconds: 0 }); |
| | messageSchema.index({ createdAt: 1 }); |
| | messageSchema.index({ messageId: 1, user: 1 }, { unique: true }); |
| |
|
| | export default messageSchema; |
| |
|