@@ -14,20 +14,42 @@ enum ServiceIdentifier {
1414 DB
1515}
1616
17+ enum AuditAction {
18+ USER_LOGIN
19+ USER_LOGOUT
20+ USER_REGISTER
21+ PASSWORD_CHANGE
22+ TWO_FACTOR_ENABLE
23+ TWO_FACTOR_DISABLE
24+ USER_UPDATE
25+ USER_DELETE
26+ SESSION_CREATE
27+ SESSION_DELETE
28+ SERVICE_ACCESS_GRANT
29+ SERVICE_ACCESS_REVOKE
30+ SERVICE_TIER_CHANGE
31+ SUBSCRIPTION_CREATE
32+ SUBSCRIPTION_UPDATE
33+ SUBSCRIPTION_CANCEL
34+ UNKNOWN
35+ }
36+
1737model User {
1838 id String @id @default (cuid () )
1939 email String @unique
2040 passwordHash String ?
41+ avatar String ? @db.Text
42+ name String ?
2143 displayName String ?
2244 twoFactorEnabled Boolean @default (false )
2345 twoFactorSecret String ?
2446 createdAt DateTime @default (now () )
2547 updatedAt DateTime @updatedAt
2648 migraited Boolean @default (false )
27-
2849 sessions Session []
2950 serviceAccess UserServiceEntitlement []
30-
51+ auditLogs AuditLog []
52+
3153 @@map (" users " )
3254}
3355
@@ -38,32 +60,44 @@ model Session {
3860 token String @unique
3961 expiresAt DateTime
4062 createdAt DateTime @default (now () )
41-
42- user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
43-
63+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
64+
4465 @@map (" sessions " )
4566 @@index ([userId ] )
4667 @@index ([expiresAt ] )
4768}
4869
70+ model AuditLog {
71+ id String @id @default (cuid () )
72+ action AuditAction @default (UNKNOWN )
73+ data Json @default (" {}" )
74+ userId String
75+ createdAt DateTime @default (now () )
76+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
77+
78+ @@map (" audit_logs " )
79+ @@index ([userId ] )
80+ @@index ([action ] )
81+ @@index ([createdAt ] )
82+ }
83+
4984model UserServiceEntitlement {
50- id String @id @default (cuid () )
51- userId String
52- service ServiceIdentifier
53- tier String @default (" free " )
54- isPremium Boolean @default (false )
55- accessFlags Json ?
56- metadata Json ?
57- customStorageLimit Int ?
58- customApiKeyLimit Int ?
59- polarCustomerId String ?
60- polarSubscriptionId String ?
85+ id String @id @default (cuid () )
86+ userId String
87+ service ServiceIdentifier
88+ tier String @default (" free " )
89+ isPremium Boolean @default (false )
90+ accessFlags Json ?
91+ metadata Json ?
92+ customStorageLimit Int ?
93+ customApiKeyLimit Int ?
94+ polarCustomerId String ?
95+ polarSubscriptionId String ?
6196 polarSubscriptionStatus String ?
62- createdAt DateTime @default (now () )
63- updatedAt DateTime @updatedAt
64-
65- user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
66-
97+ createdAt DateTime @default (now () )
98+ updatedAt DateTime @updatedAt
99+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
100+
67101 @@map (" user_service_entitlements " )
68102 @@unique ([userId , service ] )
69103 @@index ([service ] )
0 commit comments