4
4
//////////////////////////////////////////////////////////////////////////////////////////////
5
5
6
6
datasource db {
7
- provider = " postgresql "
8
- url = env (" POSTGRES_PRISMA_URL " )
9
- directUrl = env (" POSTGRES_URL_NON_POOLING " )
7
+ provider = " postgresql "
8
+ url = env (" POSTGRES_PRISMA_URL " )
9
+ directUrl = env (" POSTGRES_URL_NON_POOLING " )
10
10
}
11
11
12
12
generator js {
13
- provider = " prisma-client-js "
13
+ provider = " prisma-client-js "
14
14
}
15
15
16
16
enum SpaceUserRole {
17
- USER
18
- ADMIN
17
+ USER
18
+ ADMIN
19
19
}
20
20
21
21
/// @@deny('all', auth() == null)
22
22
/// @@allow('create', true)
23
23
/// @@allow('read', members?[user == auth()])
24
24
/// @@allow('update,delete', members?[user == auth() && role == ADMIN])
25
25
model Space {
26
- id String @id () @default (uuid () )
27
- createdAt DateTime @default (now () )
28
- updatedAt DateTime @updatedAt ()
29
- /// @length(4, 50)
30
- name String
31
- /// @regex('^[0-9a-zA-Z]{4,16}$')
32
- slug String @unique ()
33
- members SpaceUser []
34
- lists List []
26
+ id String @id () @default (uuid () )
27
+ createdAt DateTime @default (now () )
28
+ updatedAt DateTime @updatedAt ()
29
+ /// @length(4, 50)
30
+ name String
31
+ /// @regex('^[0-9a-zA-Z]{4,16}$')
32
+ slug String @unique ()
33
+ members SpaceUser []
34
+ lists List []
35
35
}
36
36
37
37
/// @@deny('all', auth() == null)
38
38
/// @@allow('create,update,delete', space.members?[user == auth() && role == ADMIN])
39
39
/// @@allow('read', space.members?[user == auth()])
40
40
model SpaceUser {
41
- id String @id () @default (uuid () )
42
- createdAt DateTime @default (now () )
43
- updatedAt DateTime @updatedAt ()
44
- space Space @relation (fields : [spaceId ] , references : [id ] , onDelete : Cascade )
45
- spaceId String
46
- user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
47
- userId String
48
- role SpaceUserRole
41
+ id String @id () @default (uuid () )
42
+ createdAt DateTime @default (now () )
43
+ updatedAt DateTime @updatedAt ()
44
+ space Space @relation (fields : [spaceId ] , references : [id ] , onDelete : Cascade )
45
+ spaceId String
46
+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
47
+ userId String
48
+ role SpaceUserRole
49
49
50
- @@unique ([userId , spaceId ] )
50
+ @@unique ([userId , spaceId ] )
51
51
}
52
52
53
53
/// @@allow('create', true)
54
54
/// @@allow('read', spaces?[space.members?[user == auth()]])
55
55
/// @@allow('all', auth() == this)
56
56
model User {
57
- id String @id () @default (uuid () )
58
- createdAt DateTime @default (now () )
59
- updatedAt DateTime @updatedAt ()
60
- /// @email
61
- email String @unique ()
62
- emailVerified DateTime ?
63
- /// @password
64
- /// @omit
65
- password String ?
66
- name String ?
67
- spaces SpaceUser []
68
- /// @url
69
- image String ?
70
- lists List []
71
- todos Todo []
72
- accounts Account []
57
+ id String @id () @default (uuid () )
58
+ createdAt DateTime @default (now () )
59
+ updatedAt DateTime @updatedAt ()
60
+ /// @email
61
+ email String @unique ()
62
+ emailVerified DateTime ?
63
+ /// @password
64
+ /// @omit
65
+ password String ?
66
+ name String ?
67
+ spaces SpaceUser []
68
+ /// @url
69
+ image String ?
70
+ lists List []
71
+ todos Todo []
72
+ accounts Account []
73
73
}
74
74
75
75
/// @@deny('all', auth() == null)
@@ -78,51 +78,51 @@ model User {
78
78
/// @@allow('update', owner == auth() && space.members?[user == auth()] && future().owner == owner)
79
79
/// @@allow('delete', owner == auth())
80
80
model List {
81
- id String @id () @default (uuid () )
82
- createdAt DateTime @default (now () )
83
- updatedAt DateTime @updatedAt ()
84
- space Space @relation (fields : [spaceId ] , references : [id ] , onDelete : Cascade )
85
- spaceId String
86
- owner User @relation (fields : [ownerId ] , references : [id ] , onDelete : Cascade )
87
- ownerId String
88
- /// @length(1, 100)
89
- title String
90
- private Boolean @default (false )
91
- todos Todo []
81
+ id String @id () @default (uuid () )
82
+ createdAt DateTime @default (now () )
83
+ updatedAt DateTime @updatedAt ()
84
+ space Space @relation (fields : [spaceId ] , references : [id ] , onDelete : Cascade )
85
+ spaceId String
86
+ owner User @relation (fields : [ownerId ] , references : [id ] , onDelete : Cascade )
87
+ ownerId String
88
+ /// @length(1, 100)
89
+ title String
90
+ private Boolean @default (false )
91
+ todos Todo []
92
92
}
93
93
94
94
/// @@deny('all', auth() == null)
95
95
/// @@allow('all', list.owner == auth())
96
96
/// @@allow('all', list.space.members?[user == auth()] && !list.private)
97
97
/// @@deny('update', future().owner != owner)
98
98
model Todo {
99
- id String @id () @default (uuid () )
100
- createdAt DateTime @default (now () )
101
- updatedAt DateTime @updatedAt ()
102
- owner User @relation (fields : [ownerId ] , references : [id ] , onDelete : Cascade )
103
- ownerId String
104
- list List @relation (fields : [listId ] , references : [id ] , onDelete : Cascade )
105
- listId String
106
- /// @length(1, 100)
107
- title String
108
- completedAt DateTime ?
99
+ id String @id () @default (uuid () )
100
+ createdAt DateTime @default (now () )
101
+ updatedAt DateTime @updatedAt ()
102
+ owner User @relation (fields : [ownerId ] , references : [id ] , onDelete : Cascade )
103
+ ownerId String
104
+ list List @relation (fields : [listId ] , references : [id ] , onDelete : Cascade )
105
+ listId String
106
+ /// @length(1, 100)
107
+ title String
108
+ completedAt DateTime ?
109
109
}
110
110
111
111
model Account {
112
- id String @id () @default (uuid () )
113
- userId String
114
- type String
115
- provider String
116
- providerAccountId String
117
- refresh_token String ?
118
- refresh_token_expires_in Int ?
119
- access_token String ?
120
- expires_at Int ?
121
- token_type String ?
122
- scope String ?
123
- id_token String ?
124
- session_state String ?
125
- user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
112
+ id String @id () @default (uuid () )
113
+ userId String
114
+ type String
115
+ provider String
116
+ providerAccountId String
117
+ refresh_token String ?
118
+ refresh_token_expires_in Int ?
119
+ access_token String ?
120
+ expires_at Int ?
121
+ token_type String ?
122
+ scope String ?
123
+ id_token String ?
124
+ session_state String ?
125
+ user User @relation (fields : [userId ] , references : [id ] , onDelete : Cascade )
126
126
127
- @@unique ([provider , providerAccountId ] )
128
- }
127
+ @@unique ([provider , providerAccountId ] )
128
+ }
0 commit comments