gadget/docs/archive/models/session.ts

59 lines
1.1 KiB
TypeScript

// 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<ISession>({
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<ISession>("Session", SessionSchema);
export default Session;