File size: 960 Bytes
87cb242 | 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 31 32 33 34 35 | import mongoose, { Schema, Document, Model } from 'mongoose';
/**
* FriendRequest model — tracks pending/accepted/rejected friend requests.
* Used by REST-style HTTP upgrade calls (future) or future REST API layer.
*/
export interface IFriendRequest extends Document {
fromUid: string;
toUid: string;
status: 'pending' | 'accepted' | 'rejected';
createdAt: Date;
updatedAt: Date;
}
const FriendRequestSchema = new Schema<IFriendRequest>(
{
fromUid: { type: String, required: true, index: true },
toUid: { type: String, required: true, index: true },
status: {
type: String,
enum: ['pending', 'accepted', 'rejected'],
default: 'pending',
},
},
{ timestamps: true }
);
// Prevent duplicate requests
FriendRequestSchema.index({ fromUid: 1, toUid: 1 }, { unique: true });
export const FriendRequestModel: Model<IFriendRequest> = mongoose.model<IFriendRequest>(
'FriendRequest',
FriendRequestSchema
);
|