@@ -18,25 +18,60 @@ model User {
1818 company String ?
1919 avatarUrl String ? @map (" avatar_url " )
2020 accentColor String @default (" #6366f1 " ) @map (" accent_color " )
21- provider String
22- providerId String @map (" provider_id " )
21+ emailVerified Boolean @default (false ) @map (" email_verified " )
22+ phoneNumber String ? @unique @map (" phone_number " )
23+ lastSignInAt DateTime ? @map (" last_sign_in_at " )
2324 createdAt DateTime @default (now () ) @map (" created_at " )
2425 updatedAt DateTime @updatedAt @map (" updated_at " )
26+ isActive Boolean @default (false )
2527
28+ identities UserIdentity []
29+ refreshTokens RefreshToken []
2630 platformLinks PlatformLink []
2731 cards Card []
2832 oauthTokens OAuthToken []
2933 ownedViews CardView [] @relation (" cardOwner " )
3034 viewedCards CardView [] @relation (" cardViewer " )
3135 followLogs FollowLog []
32- organizer Event []
33- attendedEvents EventAttendee []
36+ organizer Event []
37+ attendedEvents EventAttendee []
38+ ownedTeams Team [] @relation (" TeamOwner " )
39+ teamMemberships TeamMember [] @relation (" TeamMember " )
3440
35- ownedTeams Team [] @relation (" TeamOwner " )
36- teamMemberships TeamMember [] @relation (" TeamMember " )
41+ @@map (" users " )
42+ }
43+
44+ model UserIdentity {
45+ id String @id @default (uuid () )
46+ userId String @map (" user_id " )
47+ provider String // "google.com" | "apple.com" | "firebase" | "phone"
48+ providerId String @map (" provider_id " ) // Google sub / Apple sub / Firebase UID
49+ createdAt DateTime @default (now () ) @map (" created_at " )
50+
51+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
3752
3853 @@unique ([provider , providerId ] )
39- @@map (" users " )
54+ @@index ([userId ] )
55+ @@map (" user_identities " )
56+ }
57+
58+
59+ model RefreshToken {
60+ id String @id @default (uuid () )
61+ userId String @map (" user_id " )
62+ tokenHash String @unique @map (" token_hash " ) //SHA-256 hash
63+ family String // token rotation
64+ expiresAt DateTime @map (" expires_at " )
65+ revokedAt DateTime ? @map (" revoked_at " ) // null = still valid
66+ createdAt DateTime @default (now () ) @map (" created_at " )
67+ userAgent String ? @map (" user_agent " )
68+ ip String ?
69+
70+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
71+
72+ @@index ([userId ] )
73+ @@index ([family ] )
74+ @@map (" refresh_tokens " )
4075}
4176
4277model PlatformLink {
0 commit comments