package models import ( "clapclap/internal/uuid" ) type FriendRequestStatus string const ( Pending FriendRequestStatus = "pending" Accepted FriendRequestStatus = "accepted" Rejected FriendRequestStatus = "rejected" ) type FriendRequest struct { Base SenderID uuid.UUID `gorm:"index"` Sender *User `gorm:"foreignKey:SenderID;references:ID;onDelete:CASCADE"` ReceiverID uuid.UUID `gorm:"index"` Receiver *User `gorm:"foreignKey:ReceiverID;references:ID;onDelete:CASCADE"` Status FriendRequestStatus `gorm:"default:pending"` } /* type FriendRepo interface { GetFriends(userID uuid.UUID) ([]*models.User, error) SendFriendRequest(senderID, receiverID uuid.UUID) error CancelFriendRequest(requestID uuid.UUID) error AcceptFriendRequest(requestID uuid.UUID) error RejectFriendRequest(requestID uuid.UUID) error RemoveFriend(userID, friendID uuid.UUID) error GetPendingRequests(userID uuid.UUID) ([]*models.FriendRequest, error) GetPendingRequestWith(userID uuid.UUID, withID uuid.UUID) (*models.FriendRequest, error) // to be used someday AddFriend(userID, friendID uuid.UUID) error GetFriendsWithPagination(userID uuid.UUID, page, pageSize int64) ([]*models.User, int64, error) GetFriendsCount(userID uuid.UUID) (int64, error) IsFriend(userID, friendID uuid.UUID) (bool, error) SearchFriends(userID uuid.UUID, searchTerm string) ([]*models.User, error) GetMutualFriends(userID1, userID2 uuid.UUID) ([]*models.User, error) GetFriendsOrderedBy(userID uuid.UUID, orderBy string) ([]*models.User, error) GetSentRequests(userID uuid.UUID) ([]*models.FriendRequest, error) GetFriendRequestStatus(senderID, receiverID uuid.UUID) (models.FriendRequestStatus, error) GetFriendRequestByID(requestID uuid.UUID) (*models.FriendRequest, error) } */