// src/models/session.ts // Copyright (C) 2026 DTP Technologies, LLC // All Rights Reserved import { Types, Schema, Document, model } from "mongoose"; export interface ISession extends Document { _id: Types.ObjectId; userId: Types.ObjectId; token: string; createdAt: Date; expiresAt: Date; lastActivityAt: Date; ipAddress?: string; userAgent?: string; } const SessionSchema = new Schema({ userId: { type: Schema.Types.ObjectId, ref: "User", required: true, index: true, }, token: { type: String, required: true, unique: true, index: true, }, createdAt: { type: Date, required: true, default: Date.now, }, expiresAt: { type: Date, required: true, index: true, }, lastActivityAt: { type: Date, required: true, default: Date.now, }, ipAddress: { type: String, }, userAgent: { type: String, }, }); // Index for cleanup queries SessionSchema.index({ expiresAt: 1 }); export const Session = model("Session", SessionSchema); export default Session;