1
-
2
1
CREATE SCHEMA audit ;
3
2
CREATE SCHEMA analytics ;
4
3
5
-
6
- CREATE ROLE app_reader NOINHERIT;
7
- CREATE ROLE app_writer NOINHERIT;
8
- CREATE ROLE auditor NOINHERIT;
4
+ CREATE ROLE app_reader NOINHERIT;
5
+ CREATE ROLE app_writer NOINHERIT;
6
+ CREATE ROLE auditor NOINHERIT;
9
7
CREATE ROLE report_user NOINHERIT;
10
8
CREATE ROLE backup_role NOINHERIT;
11
9
12
-
10
+ ALTER ROLE backup_user CREATEDB;
13
11
14
12
GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_reader;
15
- GRANT SELECT , INSERT, UPDATE , DELETE ON ALL TABLES IN SCHEMA public TO app_writer;
13
+ GRANT SELECT ,INSERT,UPDATE ,DELETE ON ALL TABLES IN SCHEMA public TO app_writer;
16
14
GRANT SELECT ON ALL TABLES IN SCHEMA audit TO auditor;
17
15
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO report_user;
18
- GRANT CONNECT ON DATABASE videogames_db TO backup_role;
19
- GRANT USAGE ON SCHEMA public, audit, analytics TO backup_role;
20
- GRANT SELECT ON ALL TABLES IN SCHEMA public, audit, analytics TO backup_role;
21
- GRANT SELECT ON ALL SEQUENCES IN SCHEMA public, audit, analytics TO backup_role;
22
-
23
-
24
-
25
16
26
- ALTER DEFAULT PRIVILEGES IN SCHEMA public, audit, analytics
27
- GRANT SELECT ON TABLES TO backup_role;
28
- ALTER DEFAULT PRIVILEGES IN SCHEMA public, audit, analytics
29
- GRANT SELECT ON SEQUENCES TO backup_role;
30
- ALTER ROLE backup_user CREATEDB;
17
+ GRANT CONNECT ON DATABASE videogames_db TO backup_role;
18
+ GRANT USAGE ON SCHEMA public,audit,analytics TO backup_role;
19
+ GRANT SELECT ON ALL TABLES IN SCHEMA public,audit,analytics TO backup_role;
20
+ GRANT SELECT ON ALL SEQUENCES IN SCHEMA public,audit,analytics TO backup_role;
31
21
32
- -- ------------
22
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public,audit,analytics
23
+ GRANT SELECT ON TABLES TO backup_role;
24
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public,audit,analytics
25
+ GRANT SELECT ON SEQUENCES TO backup_role;
33
26
34
- GRANT USAGE ON SCHEMA audit TO app_writer;
27
+ GRANT USAGE ON SCHEMA audit TO app_writer;
35
28
GRANT INSERT ON audit .audit_log TO app_writer;
36
- GRANT USAGE, SELECT ON SEQUENCE audit .audit_log_id_seq TO app_writer;
37
-
38
-
29
+ GRANT USAGE,SELECT ON SEQUENCE audit .audit_log_id_seq TO app_writer;
39
30
40
- CREATE USER game_reader WITH PASSWORD ' readerpass' ;
41
- CREATE USER game_writer WITH PASSWORD ' writerpass' ;
42
- CREATE USER audit_user WITH PASSWORD ' auditpass' ;
31
+ CREATE USER game_reader WITH PASSWORD ' readerpass' ;
32
+ CREATE USER game_writer WITH PASSWORD ' writerpass' ;
33
+ CREATE USER audit_user WITH PASSWORD ' auditpass' ;
43
34
CREATE USER report_user_app WITH PASSWORD ' reportpass' ;
44
- CREATE USER backup_user WITH PASSWORD ' backuppass' ;
45
-
46
-
47
-
35
+ CREATE USER backup_user WITH PASSWORD ' backuppass' ;
48
36
49
- GRANT app_reader TO game_reader;
50
- GRANT app_writer TO game_writer;
51
- GRANT auditor TO audit_user;
37
+ GRANT app_reader TO game_reader;
38
+ GRANT app_writer TO game_writer;
39
+ GRANT auditor TO audit_user;
52
40
GRANT report_user TO report_user_app;
53
41
GRANT backup_role TO backup_user;
54
42
43
+ ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ,INSERT,UPDATE ,DELETE ON TABLES TO app_writer;
55
44
56
- ALTER DEFAULT PRIVILEGES IN SCHEMA public
57
- GRANT SELECT , INSERT, UPDATE , DELETE ON TABLES TO app_writer;
58
-
59
-
45
+ GRANT USAGE ON SCHEMA public TO report_user;
46
+ GRANT SELECT ON TABLE public .django_session TO report_user;
47
+ GRANT SELECT ON TABLE public .auth_user TO report_user;
48
+ GRANT SELECT ON TABLE public .django_content_type TO report_user;
49
+ GRANT SELECT ON TABLE public .auth_permission TO report_user;
60
50
61
51
-- -----------------------------------------------------------------------------
62
52
@@ -187,6 +177,7 @@ WHERE rank_in_genre <= 5;
187
177
GRANT SELECT ON analytics .top_reviewed_games_per_genre TO report_user;
188
178
189
179
180
+
190
181
CREATE MATERIALIZED VIEW analytics .avg_rating_per_game AS
191
182
SELECT
192
183
vg .id AS game_id,
@@ -271,6 +262,8 @@ ON public.videogames_register_videogame
271
262
USING GIN(to_tsvector(' english' , description));
272
263
273
264
265
+
266
+
274
267
SELECT * FROM videogames_register_developer WHERE videogames_register_developer .id IS NULL ;
275
268
276
269
-- ------------------------------------------------------
@@ -287,15 +280,6 @@ HAVING COUNT(DISTINCT r.game_id) > 3;
287
280
288
281
289
282
290
- SELECT
291
- u .username ,
292
- COUNT (DISTINCT r .game_id ) AS reviewed_games
293
- FROM public .auth_user u
294
- JOIN public .videogames_register_review r ON u .id = r .user_id
295
- GROUP BY u .username
296
- HAVING COUNT (DISTINCT r .game_id ) > 3 ;
297
-
298
-
299
283
SELECT
300
284
vg .title ,
301
285
ROUND(AVG (r .rating )::numeric , 2 ) AS avg_rating,
0 commit comments