Skip to main content

Connection Object

The Connection object represents a bidirectional relationship between users in the Replyke social features framework. Unlike follows, connections require mutual agreement between two users and represent equal partnerships similar to Facebook friends or LinkedIn connections.

Properties


Status Definitions


Characteristics

Bidirectional Relationship

  • Mutual Agreement: Requires approval from both parties
  • Equal Partnership: Once accepted, both users have equal status
  • Request/Response Workflow: Structured approval process
  • Complete History: Maintains full interaction history

Business Rules

  1. Single Model Approach: One model handles requests and established connections
  2. Duplicate Prevention: Only one active connection between any two users
  3. Re-request Logic: After decline, only receiver can initiate new requests
  4. Status Transitions: Clear progression from pending → accepted/declined

User Model Associations

The Connection model creates two associations with the User model:

API Endpoints

User-Centric Operations

  • POST /users/:userId/connection - Send connection request to user
  • GET /users/:userId/connection - Get connection status with user
  • DELETE /users/:userId/connection - Decline/withdraw/disconnect with user
  • GET /users/:userId/connections - Get connections of specific user
  • GET /users/:userId/connections-count - Get connections count for specific user

Connection-Centric Operations

  • GET /connections - List established connections
  • GET /connections/count - Get connections count
  • GET /connections/pending/sent - List sent pending requests
  • GET /connections/pending/received - List received pending requests
  • PUT /connections/:connectionId/accept - Accept specific connection
  • PUT /connections/:connectionId/decline - Decline specific connection
  • DELETE /connections/:connectionId - Remove specific connection

Status Transitions

Valid Transitions

Invalid Transitions

  • declined → accepted (must delete and create new request)
  • Cannot change status once responded (except delete for disconnect/re-request)

Usage Examples

Sending Connection Request

Accepting Connection

Checking Connection Status


Notification Strategy


Query Patterns

Get User’s Connections (Bidirectional)

Get Pending Requests


Performance Considerations

  • Indexes: Optimized for queries by requesterId, receiverId, status, and projectId
  • Pagination: All list endpoints support pagination
  • Rate Limiting: Connection requests limited to 25 requests per 5 minutes
  • Caching: Consider caching connection counts and lists for active users

  • User: The users involved in the connection relationship
  • Follow: One-way relationship alternative that doesn’t require approval
  • AppNotification: Notifications for connection requests and acceptances