newOS for Developers
Back to Graph Traversal
User Network
Traverse powered/powering relationships
intermediate
user+{id}+powered+userOverview
User Network edges represent power relationships between users. "Powered" means the user has given watts to another user, creating a direct connection in the social graph.
This differs from rating (following) - powering is a transactional relationship.
Edge Patterns
| Pattern | Meaning |
|---|---|
| user+id+powered+user | Users this user has powered |
| user+id+poweredBy+user | Users who have powered this user |
| user+id+rates+user | Users this user follows |
| user+id+ratedBy+user | Users who follow this user |
Usage Example
import { getEdges } from "@/lib/cache";
import { getUserDetails } from "@newgraph-signals/actions/user";
// Get users this user has powered
const poweredUserIds = await getEdges(
"user",
"user-123",
"powered",
"user"
);
// Get full user profiles
const poweredUsers = await Promise.all(
poweredUserIds.map(id => getUserDetails({ userId: id }))
);
// Traverse bi-directionally
const followers = await getEdges("user", "user-123", "ratedBy", "user");
const following = await getEdges("user", "user-123", "rates", "user");
// Find mutual connections
const mutual = followers.filter(id => following.includes(id));Network Structure
poweredBy
┌─────────┐ ◀────────── ┌─────────┐
│ User A │ │ User B │
└────┬────┘ ──────────▶ └─────────┘
│ powered
│
│ rates
▼
┌─────────┐
│ User C │ ◀── ratedBy ── User D
└─────────┘