-# 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.
server {
fastcgi_param SCRIPT_FILENAME ${dollar}document_root/record.sh;
}
- location ~ ^/(exercise|gym|workout)$ {
+ location ~ ^/(category|exercise|exercise_category|gym|workout)$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param RECORD_TYPE ${dollar}1;
#!/bin/sh
-# 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.
. /etc/environment
-gyms=$(/usr/bin/psql --user=gym_tracker --dbname="${GYM_DB}" --tuples-only \
- --no-align --command="SELECT name FROM gyms")
+query_db() {
+ /usr/bin/psql --user=gym_tracker --dbname="${GYM_DB}" --tuples-only \
+ --no-align --command="${1}"
+}
+
+exercises=$(query_db "SELECT name FROM exercises ORDER BY ID")
+gyms=$(query_db "SELECT name FROM gyms ORDER BY id")
+categories=$(query_db "SELECT name FROM categories ORDER BY id")
format_as() {
xargs --replace={} echo "${1}"
<button type='submit'>Add</button>
</fieldset>
</form>
+
+ <form action='/category' method='post'>
+ <fieldset>
+ <legend>New exercise category</legend>
+ <input type='text' name='category' placeholder='--Category--' required />
+ <button type='submit'>Add</button>
+ </fieldset>
+ </form>
+
+ <form action='/exercise_category' method='post'>
+ <fieldset>
+ <legend>Associate exercise with category</legend>
+ <select id='exercise' name='exercise'>
+ <option value=''>--Select exercise--</option>
+ $(echo "${exercises}" | format_as "<option value='{}'>{}</option>")
+ </select>
+ <select id='category' name='category'>
+ <option value=''>--Select category--</option>
+ $(echo "${categories}" | format_as "<option value='{}'>{}</option>")
+ </select>
+ <button type='submit'>Associate</button>
+ </fieldset>
+ </form>
</body>
</html>"
#!/bin/bash
-# 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.
. /etc/environment
<body>"
case ${RECORD_TYPE} in
+ category)
+ category=$(get_query_param category)
+
+ query_db "\
+ INSERT INTO categories (name)
+ VALUES ('${category}')"
+
+ id=$(query_db "\
+ SELECT id
+ FROM categories
+ WHERE name='${category}'")
+
+ echo "Recorded new category '${category}' (id=${id})."
+ ;;
exercise)
exercise=$(get_query_param exercise)
echo "Recorded new exercise '${exercise}' (id=${id})."
;;
+ exercise_category)
+ category=$(get_query_param category)
+ exercise=$(get_query_param exercise)
+
+ category_id=$(query_db "\
+ SELECT id
+ FROM categories
+ WHERE name='${category}'")
+
+ exercise_id=$(query_db "\
+ SELECT id
+ FROM exercises
+ WHERE name='${exercise}'")
+
+ echo "Associated exercise '${exercise}' (id=${exercise_id}) with category\
+ ${category} (id=${category_id})."
+ ;;
gym)
gym=$(get_query_param gym)