@@ -3,34 +3,45 @@ CREATE TABLE "users"
3
3
" id" SERIAL PRIMARY KEY ,
4
4
" email" varchar UNIQUE NOT NULL ,
5
5
" hashed_password" varchar NOT NULL ,
6
- " created_at" timestamptz NOT NULL DEFAULT (now()),
7
- " updated_at" timestamptz NOT NULL DEFAULT (now())
6
+ " created_at" timestamptz NOT NULL DEFAULT (now()),
7
+ " updated_at" timestamptz NOT NULL DEFAULT (now())
8
+ );
9
+
10
+ CREATE TABLE "sessions "
11
+ (
12
+ " id" uuid PRIMARY KEY NOT NULL ,
13
+ " user_id" int NOT NULL ,
14
+ " expires_at" timestamp NOT NULL ,
15
+ " created_at" timestamptz NOT NULL DEFAULT (now())
8
16
);
9
17
10
18
CREATE TABLE "roles "
11
19
(
12
20
" id" SERIAL PRIMARY KEY ,
13
21
" name" varchar UNIQUE NOT NULL ,
14
- " created_at" timestamptz NOT NULL DEFAULT (now()),
15
- " updated_at" timestamptz NOT NULL DEFAULT (now())
22
+ " created_at" timestamptz NOT NULL DEFAULT (now()),
23
+ " updated_at" timestamptz NOT NULL DEFAULT (now())
16
24
);
17
25
18
26
CREATE TABLE "user_role "
19
27
(
20
- " id" SERIAL PRIMARY KEY ,
21
28
" user_id" int NOT NULL ,
22
- " role_id" int NOT NULL
29
+ " role_id" int NOT NULL ,
30
+ PRIMARY KEY (" user_id" , " role_id" )
23
31
);
24
32
25
33
CREATE TABLE "posts "
26
34
(
27
35
" id" SERIAL PRIMARY KEY ,
28
- " content" text NOT NULL ,
36
+ " content" text NOT NULL ,
29
37
" created_at" timestamptz NOT NULL DEFAULT (now()),
30
38
" updated_at" timestamptz NOT NULL DEFAULT (now()),
31
- " user_id" int NOT NULL
39
+ " user_id" int NOT NULL
32
40
);
33
41
42
+ ALTER TABLE " sessions"
43
+ ADD FOREIGN KEY (" user_id" ) REFERENCES " users" (" id" );
44
+
34
45
ALTER TABLE " user_role"
35
46
ADD FOREIGN KEY (" user_id" ) REFERENCES " users" (" id" );
36
47
@@ -40,7 +51,9 @@ ALTER TABLE "user_role"
40
51
ALTER TABLE " posts"
41
52
ADD FOREIGN KEY (" user_id" ) REFERENCES " users" (" id" );
42
53
43
- CREATE UNIQUE INDEX ON " user_role" (" user_id" , " role_id" );
54
+ CREATE INDEX ON " users" (" created_at" );
55
+
56
+ CREATE INDEX ON " sessions" (" expires_at" );
44
57
45
58
CREATE INDEX ON " posts" (" created_at" );
46
59
0 commit comments