1
+ import type { AdapterAccount } from "next-auth/adapters" ;
1
2
import {
2
3
pgTable ,
3
4
serial ,
6
7
integer ,
7
8
uniqueIndex ,
8
9
pgEnum ,
10
+ boolean ,
11
+ primaryKey ,
9
12
} from "drizzle-orm/pg-core" ;
10
13
11
14
export const approvalRequestStatusEnum = pgEnum ( "approval_request_status" , [
@@ -14,16 +17,86 @@ export const approvalRequestStatusEnum = pgEnum("approval_request_status", [
14
17
"rejected" ,
15
18
] ) ;
16
19
17
- export const users = pgTable ( "users" , {
18
- id : serial ( "id" ) . primaryKey ( ) ,
19
- name : text ( "name" ) . notNull ( ) ,
20
- email : text ( "email" ) . notNull ( ) . unique ( ) ,
21
- createdAt : timestamp ( "created_at" ) . defaultNow ( ) . notNull ( ) ,
20
+ export const users = pgTable ( "user" , {
21
+ id : text ( "id" )
22
+ . primaryKey ( )
23
+ . $defaultFn ( ( ) => crypto . randomUUID ( ) ) ,
24
+ name : text ( "name" ) ,
25
+ email : text ( "email" ) . unique ( ) ,
26
+ emailVerified : timestamp ( "emailVerified" , { mode : "date" } ) ,
27
+ image : text ( "image" ) ,
28
+ } ) ;
29
+
30
+ export const accounts = pgTable (
31
+ "account" ,
32
+ {
33
+ userId : text ( "userId" )
34
+ . notNull ( )
35
+ . references ( ( ) => users . id , { onDelete : "cascade" } ) ,
36
+ type : text ( "type" ) . $type < AdapterAccount [ "type" ] > ( ) . notNull ( ) ,
37
+ provider : text ( "provider" ) . notNull ( ) ,
38
+ providerAccountId : text ( "providerAccountId" ) . notNull ( ) ,
39
+ refresh_token : text ( "refresh_token" ) ,
40
+ access_token : text ( "access_token" ) ,
41
+ expires_at : integer ( "expires_at" ) ,
42
+ token_type : text ( "token_type" ) ,
43
+ scope : text ( "scope" ) ,
44
+ id_token : text ( "id_token" ) ,
45
+ session_state : text ( "session_state" ) ,
46
+ } ,
47
+ ( account ) => ( {
48
+ compoundKey : primaryKey ( {
49
+ columns : [ account . provider , account . providerAccountId ] ,
50
+ } ) ,
51
+ } ) ,
52
+ ) ;
53
+
54
+ export const sessions = pgTable ( "session" , {
55
+ sessionToken : text ( "sessionToken" ) . primaryKey ( ) ,
56
+ userId : text ( "userId" )
57
+ . notNull ( )
58
+ . references ( ( ) => users . id , { onDelete : "cascade" } ) ,
59
+ expires : timestamp ( "expires" , { mode : "date" } ) . notNull ( ) ,
22
60
} ) ;
23
61
62
+ export const verificationTokens = pgTable (
63
+ "verificationToken" ,
64
+ {
65
+ identifier : text ( "identifier" ) . notNull ( ) ,
66
+ token : text ( "token" ) . notNull ( ) ,
67
+ expires : timestamp ( "expires" , { mode : "date" } ) . notNull ( ) ,
68
+ } ,
69
+ ( verificationToken ) => ( {
70
+ compositePk : primaryKey ( {
71
+ columns : [ verificationToken . identifier , verificationToken . token ] ,
72
+ } ) ,
73
+ } ) ,
74
+ ) ;
75
+
76
+ export const authenticators = pgTable (
77
+ "authenticator" ,
78
+ {
79
+ credentialID : text ( "credentialID" ) . notNull ( ) . unique ( ) ,
80
+ userId : text ( "userId" )
81
+ . notNull ( )
82
+ . references ( ( ) => users . id , { onDelete : "cascade" } ) ,
83
+ providerAccountId : text ( "providerAccountId" ) . notNull ( ) ,
84
+ credentialPublicKey : text ( "credentialPublicKey" ) . notNull ( ) ,
85
+ counter : integer ( "counter" ) . notNull ( ) ,
86
+ credentialDeviceType : text ( "credentialDeviceType" ) . notNull ( ) ,
87
+ credentialBackedUp : boolean ( "credentialBackedUp" ) . notNull ( ) ,
88
+ transports : text ( "transports" ) ,
89
+ } ,
90
+ ( authenticator ) => ( {
91
+ compositePK : primaryKey ( {
92
+ columns : [ authenticator . userId , authenticator . credentialID ] ,
93
+ } ) ,
94
+ } ) ,
95
+ ) ;
96
+
24
97
export const devices = pgTable ( "devices" , {
25
98
id : serial ( "id" ) . primaryKey ( ) ,
26
- userId : integer ( "user_id" )
99
+ userId : text ( "user_id" )
27
100
. references ( ( ) => users . id )
28
101
. notNull ( ) ,
29
102
name : text ( "name" ) . notNull ( ) ,
@@ -46,7 +119,7 @@ export const packageMembers = pgTable(
46
119
packageId : integer ( "package_id" )
47
120
. references ( ( ) => packages . id )
48
121
. notNull ( ) ,
49
- userId : integer ( "user_id" )
122
+ userId : text ( "user_id" )
50
123
. references ( ( ) => users . id )
51
124
. notNull ( ) ,
52
125
createdAt : timestamp ( "created_at" ) . defaultNow ( ) . notNull ( ) ,
@@ -77,7 +150,7 @@ export const approvalGroupMembers = pgTable(
77
150
groupId : integer ( "group_id" )
78
151
. references ( ( ) => approvalGroups . id )
79
152
. notNull ( ) ,
80
- userId : integer ( "user_id" )
153
+ userId : text ( "user_id" )
81
154
. references ( ( ) => users . id )
82
155
. notNull ( ) ,
83
156
createdAt : timestamp ( "created_at" ) . defaultNow ( ) . notNull ( ) ,
@@ -109,7 +182,7 @@ export const approvals = pgTable(
109
182
requestId : integer ( "request_id" )
110
183
. references ( ( ) => approvalRequests . id )
111
184
. notNull ( ) ,
112
- userId : integer ( "user_id" )
185
+ userId : text ( "user_id" )
113
186
. references ( ( ) => users . id )
114
187
. notNull ( ) ,
115
188
createdAt : timestamp ( "created_at" ) . defaultNow ( ) . notNull ( ) ,
0 commit comments