import { Schema, model, Document, Types } from 'mongoose'

/** Snapshot of a status before it is deleted (user-initiated delete or expiry from scheduler). */
const StatusHistorySchema = new Schema(
	{
		user: {
			type: Types.ObjectId,
			ref: 'User',
			required: true,
		},
		statusSnapshot: {
			type: Schema.Types.Mixed,
			required: true,
		},
		deletedAt: {
			type: Date,
			required: true,
			default: Date,
		},
		deletedBy: {
			type: String,
			enum: ['user', 'expiry'],
			required: true,
		},
		community: {
			type: Types.ObjectId,
			ref: 'Community',
		},
	},
	{ versionKey: false }
)

StatusHistorySchema.index({ deletedAt: 1 })
StatusHistorySchema.index({ user: 1, deletedAt: 1 })

export interface IStatusHistory extends Document {
	_id: Types.ObjectId
	user: Types.ObjectId
	statusSnapshot: Record<string, any>
	deletedAt: Date
	deletedBy: 'user' | 'expiry'
	community?: Types.ObjectId
}

export const StatusHistory = model<IStatusHistory>('StatusHistory', StatusHistorySchema, 'status-histories')
