newOS for Developers

Back to Graph Traversal

User Network

Traverse powered/powering relationships

intermediateuser+{id}+powered+user

Overview

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

PatternMeaning
user+id+powered+userUsers this user has powered
user+id+poweredBy+userUsers who have powered this user
user+id+rates+userUsers this user follows
user+id+ratedBy+userUsers 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
    └─────────┘