feat: implement connection request management including schema, API endpoints, and business logic for users and agents.

This commit is contained in:
pradeepkumar
2026-02-02 09:59:25 +05:30
parent 497a1a4ba6
commit 93070474f1
10 changed files with 601 additions and 1 deletions

View File

@@ -56,6 +56,12 @@ enum VerificationStatus {
REJECTED // Admin rejected verification
}
enum ConnectionStatus {
PENDING
ACCEPTED
REJECTED
}
// ===========================================
// USER - Authentication Only
@@ -89,6 +95,9 @@ model User {
// Auth Relations
sessions Session[]
// Connection Requests
connectionRequests ConnectionRequest[]
@@index([email])
@@index([role])
@@index([status])
@@ -188,6 +197,7 @@ model AgentProfile {
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
agentType AgentType? @relation(fields: [agentTypeId], references: [id])
fieldValues AgentProfileFieldValue[]
connectionRequests ConnectionRequest[]
@@index([userId])
@@index([agentTypeId])
@@ -366,3 +376,30 @@ model Session {
@@index([token])
@@map("sessions")
}
// ===========================================
// CONNECTION REQUEST - User to Agent connections
// ===========================================
model ConnectionRequest {
id String @id @default(uuid())
userId String // User sending the request
agentProfileId String // Agent receiving the request
status ConnectionStatus @default(PENDING)
message String? @db.Text // Optional message from user
// Timestamps
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
respondedAt DateTime? // When agent responded
// Relations
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
agentProfile AgentProfile @relation(fields: [agentProfileId], references: [id], onDelete: Cascade)
@@unique([userId, agentProfileId]) // One request per user-agent pair
@@index([agentProfileId, status])
@@index([userId, status])
@@index([status])
@@map("connection_requests")
}