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
);