User
The User model represents an individual account. Users can create worlds, join worlds, participate in events, RSVP to events, and author notes.
Fields
| Field | Type | Attributes | Description |
|---|---|---|---|
| id | String | @id, @default(cuid()) | Unique user ID |
| username | String | @unique | User's unique username |
| password | String | Hashed password | |
| salt | String | Salt used for password hashing | |
| refreshToken | String? | Refresh token for session management (optional) | |
| createdAt | DateTime | @default(now()) | Timestamp when the user was created |
| memberships | WorldMembership[] | @relation | Worlds the user is a member of |
| events | Event[] | @relation | Events created by the user |
| RSVPs | EventRSVP[] | @relation | Events the user has RSVP’d to |
| notes | Note[] | @relation | Notes authored by the user |
Relationships
- User has many WorldMemberships (can join or create worlds).
- User can create many Events.
- User can RSVP to many Events via EventRSVP.
- User can author many Notes.
Example Record
{
"id": "user123",
"username": "player1",
"password": "<hashed>",
"salt": "<random_salt>",
"refreshToken": "refresh_token_value",
"createdAt": "2025-09-01T18:00:00.000Z",
"memberships": [{ "worldId": "world123", "role": "OWNER" }],
"events": [{ "id": "event1", "name": "Boss Raid" }],
"RSVPs": [{ "eventId": "event1" }],
"notes": [{ "id": "note1", "title": "Strategy" }]
}