const { DataTypes } = require('sequelize'); const { sequelize } = require('../config/database'); const ResponseSession = sequelize.define('ResponseSession', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, openaiResponseId: { type: DataTypes.STRING, allowNull: false, unique: true, comment: 'OpenAI response ID from Responses API' }, conversationId: { type: DataTypes.UUID, allowNull: false, references: { model: 'conversations', key: 'id', }, onUpdate: 'CASCADE', onDelete: 'CASCADE', }, assistantId: { type: DataTypes.UUID, allowNull: false, references: { model: 'assistants', key: 'id', }, onUpdate: 'CASCADE', onDelete: 'CASCADE', }, userId: { type: DataTypes.UUID, allowNull: false, references: { model: 'users', key: 'id', }, onUpdate: 'CASCADE', onDelete: 'CASCADE', }, status: { type: DataTypes.ENUM('in_progress', 'completed', 'failed', 'cancelled'), defaultValue: 'in_progress', allowNull: false, }, backgroundProcessing: { type: DataTypes.BOOLEAN, defaultValue: false, allowNull: false, }, toolsUsed: { type: DataTypes.JSONB, defaultValue: [], comment: 'Array of tools used in this response session' }, metadata: { type: DataTypes.JSONB, defaultValue: {}, }, }, { tableName: 'response_sessions', timestamps: true, indexes: [ { fields: ['openaiResponseId'], unique: true }, { fields: ['conversationId'] }, { fields: ['assistantId'] }, { fields: ['userId'] }, { fields: ['status'] }, { fields: ['createdAt'] }, ], }); module.exports = ResponseSession;