All files / services/agent-execution/src/models Session.js

100% Statements 30/30
100% Branches 1/1
100% Functions 0/0
100% Lines 30/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 311x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
const mongoose = require('mongoose');
 
const messageSchema = new mongoose.Schema({
  role: { type: String, enum: ['user', 'assistant'], required: true },
  content: { type: String, required: true },
  sources: { type: Array, default: [] },
  createdAt: { type: Date, default: Date.now }
}, { _id: false });
 
const sessionSchema = new mongoose.Schema({
  organizationId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Organization',
    required: true,
    index: true
  },
  agentId: { type: mongoose.Schema.Types.ObjectId, required: true, index: true },
  userId: { type: String, default: 'anonymous', index: true },
  messages: { type: [messageSchema], default: [] },
  createdAt: { type: Date, default: Date.now },
  updatedAt: { type: Date, default: Date.now }
}, {
  toJSON: { virtuals: true }
});
 
sessionSchema.index({ organizationId: 1, agentId: 1, userId: 1, createdAt: -1 });
 
const Session = mongoose.model('Session', sessionSchema);
 
module.exports = Session;