]> git.ekhem.eu.org Git - gym.git/commitdiff
Categorise exercises by the muscles they target.
authorJakub Czajka <jakub@ekhem.eu.org>
Sat, 6 Jan 2024 13:41:30 +0000 (14:41 +0100)
committerJakub Czajka <jakub@ekhem.eu.org>
Sat, 6 Jan 2024 14:58:09 +0000 (15:58 +0100)
COPYING
create.sql
drop.sql

diff --git a/COPYING b/COPYING
index 9230d31ab43ebd6bf0289ea8acd4efe8b9bbd077..657d13ba1edac3451cfff349bdd0416fd7fda874 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -631,7 +631,7 @@ to attach them to the start of each source file to most effectively
 state the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
-    Copyright (C) 2023 Jakub Czajka <jakub@ekhem.eu.org>
+    Copyright (C) 2023-2024 Jakub Czajka <jakub@ekhem.eu.org>
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -651,7 +651,7 @@ Also add information on how to contact you by electronic and paper mail.
   If the program does terminal interaction, make it output a short
 notice like this when it starts in an interactive mode:
 
-    gym Copyright (C) 2023 Jakub Czajka <jakub@ekhem.eu.org>
+    gym Copyright (C) 2023-2024 Jakub Czajka <jakub@ekhem.eu.org>
     This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
index 7a7828c5dd77a8fcc09525fdda1b4f0e2110b726..67eefd7c83a04342292fc059e6e606c8157a8c60 100644 (file)
@@ -1,11 +1,22 @@
-/* Copyright (c) 2023 Jakub Czajka <jakub@ekhem.eu.org>
+/* Copyright (c) 2023-2024 Jakub Czajka <jakub@ekhem.eu.org>
    License: GPL-3.0 or later. */
 
+CREATE TABLE IF NOT EXISTS categories (
+    id SERIAL PRIMARY KEY,
+    name VARCHAR(128) NOT NULL UNIQUE
+);
+
 CREATE TABLE IF NOT EXISTS exercises (
     id SERIAL PRIMARY KEY,
     name VARCHAR(128) NOT NULL UNIQUE
 );
 
+CREATE TABLE IF NOT EXISTS exercises_categories (
+    exercise_id INTEGER REFERENCES exercises (id),
+    category_id INTEGER REFERENCES categories (id),
+    PRIMARY KEY (exercise_id, category_id)
+);
+
 CREATE TABLE IF NOT EXISTS gyms (
     id SERIAL PRIMARY KEY,
     name VARCHAR(128) NOT NULL UNIQUE
@@ -52,19 +63,22 @@ BEGIN
         CREATE ROLE gym_tracker LOGIN;
 
         GRANT SELECT
-        ON TABLE exercises, gyms, gyms_records, records, workouts, workouts_exercises
+        ON categories, exercises, exercises_categories, gyms, gyms_records,
+           records, workouts, workouts_exercises
         TO gym_tracker;
 
         GRANT INSERT
-        ON TABLE exercises, gyms, gyms_records, records, workouts, workouts_exercises, workouts_gyms
+        ON categories, exercises, exercises_categories, gyms, gyms_records,
+           records, workouts, workouts_exercises, workouts_gyms
         TO gym_tracker;
 
         GRANT UPDATE
-        ON TABLE exercises, gyms, gyms_records, records
+        ON exercises, gyms, gyms_records, records
         TO gym_tracker;
 
         GRANT USAGE, SELECT
-        ON SEQUENCE exercises_id_seq, gyms_id_seq, workouts_id_seq
+        ON SEQUENCE categories_id_seq, exercises_id_seq, gyms_id_seq,
+            workouts_id_seq
         TO gym_tracker;
 
         /* Execute for the current database. */
index a9771bb4a6091d18fe8b9d5fb38f9c6f59c38755..8d465280d40875215be25786bf5b62341b3d53d2 100644 (file)
--- a/drop.sql
+++ b/drop.sql
@@ -1,4 +1,4 @@
-/* Copyright (c) 2023 Jakub Czajka <jakub@ekhem.eu.org>
+/* Copyright (c) 2023-2024 Jakub Czajka <jakub@ekhem.eu.org>
    License: GPL-3.0 or later. */
 
 DO $$
@@ -6,19 +6,22 @@ BEGIN
     IF EXISTS (SELECT * FROM pg_user WHERE usename = 'gym_tracker')
     THEN
         REVOKE SELECT
-       ON TABLE exercises, gyms, gyms_records, records, workouts, workouts_exercises
+       ON exercises, categories, exercises_categories, gyms, gyms_records,
+           records, workouts, workouts_exercises
        FROM gym_tracker;
 
         REVOKE INSERT
-       ON TABLE exercises, gyms, gyms_records, records, workouts, workouts_exercises, workouts_gyms
+       ON exercises, categories, exercises_categories, gyms, gyms_records,
+           records, workouts, workouts_exercises, workouts_gyms
        FROM gym_tracker;
 
        REVOKE UPDATE
-       ON TABLE exercises, gym, gyms_records, records
+       ON exercises, gym, gyms_records, records
        FROM gym_tracker;
 
        REVOKE USAGE, SELECT
-       ON SEQUENCE exercises_id_seq, gyms_id_seq, workouts_id_seq
+       ON SEQUENCE exercises_id_seq, categories_id_seq, gyms_id_seq,
+           workouts_id_seq
        FROM gym_tracker;
 
        EXECUTE
@@ -36,4 +39,6 @@ DROP TABLE IF EXISTS records;
 DROP TABLE IF EXISTS gyms_records;
 DROP TABLE IF EXISTS workouts;
 DROP TABLE IF EXISTS gyms;
+DROP TABLE IF EXISTS exercises_categories;
+DROP TABLE IF EXISTS categories;
 DROP TABLE IF EXISTS exercises;