From c67f869d4de305e34d1b54632875724db555ba4d Mon Sep 17 00:00:00 2001 From: j-weissen Date: Tue, 29 Nov 2022 10:50:31 +0100 Subject: [PATCH] added createSchema.sql, implemented Dockerfile --- backend/db/Dockerfile | 4 ++++ backend/db/createSchema.sql | 39 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 backend/db/createSchema.sql diff --git a/backend/db/Dockerfile b/backend/db/Dockerfile index e69de29..6c9e911 100644 --- a/backend/db/Dockerfile +++ b/backend/db/Dockerfile @@ -0,0 +1,4 @@ +FROM postgres:15 + +RUN mkdir /docker-entrypoint-initdb.d +COPY createSchema.sql /docker-entrypoint-initdb.d \ No newline at end of file diff --git a/backend/db/createSchema.sql b/backend/db/createSchema.sql new file mode 100644 index 0000000..0041f5f --- /dev/null +++ b/backend/db/createSchema.sql @@ -0,0 +1,39 @@ +CREATE TABLE "user" ( + username VARCHAR(32) PRIMARY KEY +) + +CREATE TABLE game ( + id SERIAL PRIMARY KEY, + score INTEGER NOT NULL, + playtime TIME NOT NULL, + date DATE NOT NULL, + username VARCHAR(32) NOT NULL FOREIGN KEY REFERENCES "user" +) + +CREATE VIEW user_data AS ( + SELECT + username, + max(score) AS highscore, + sum(score) AS total_score, + sum(playtime) AS total_playtime, + avg(score) AS average_score, + count(*) AS games_played + FROM game + GROUP BY username +) + +CREATE VIEW lb_highscore AS ( + SELECT username, max(score) AS highscore FROM game GROUP BY username ORDER BY highscore DESC +) + +CREATE VIEW lb_highscore AS ( + SELECT username, sum(score) AS total_score, FROM game GROUP BY username ORDER BY total_score DESC +) + +CREATE VIEW lb_total_playtime AS ( + SELECT username, sum(playtime) AS total_playtime FROM game GROUP BY username ORDER BY total_playtime DESC +) + +CREATE VIEW lb_average_score AS ( + SELECT username, avg(score) AS average_score FROM game GROUP BY username ORDER BY average_score DESC +) \ No newline at end of file