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
- Single Model Approach: One model handles requests and established connections
- Duplicate Prevention: Only one active connection between any two users
- Re-request Logic: After decline, only receiver can initiate new requests
- 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 userGET /users/:userId/connection- Get connection status with userDELETE /users/:userId/connection- Decline/withdraw/disconnect with userGET /users/:userId/connections- Get connections of specific userGET /users/:userId/connections-count- Get connections count for specific user
Connection-Centric Operations
GET /connections- List established connectionsGET /connections/count- Get connections countGET /connections/pending/sent- List sent pending requestsGET /connections/pending/received- List received pending requestsPUT /connections/:connectionId/accept- Accept specific connectionPUT /connections/:connectionId/decline- Decline specific connectionDELETE /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
Related Models
- 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

