From: Jakub Czajka Date: Sun, 7 Jan 2024 12:20:42 +0000 (+0100) Subject: Simplify insertion of new elements. X-Git-Url: https://git.ekhem.eu.org/?a=commitdiff_plain;h=4294f77d9a05b8a29c7d8e7a05bf1a619de0bd02;p=gym.git Simplify insertion of new elements. --- diff --git a/insert.sh b/insert.sh index c0a3954..097e5aa 100755 --- a/insert.sh +++ b/insert.sh @@ -18,6 +18,22 @@ query_db() { --no-align --command="${1}" } +insert_into() { + query_db "\ + WITH new_id AS ( + INSERT INTO ${1} (name) + VALUES ('${2}') + ON CONFLICT DO NOTHING + RETURNING id + ) + SELECT * + FROM new_id + UNION + SELECT id + FROM ${1} + WHERE name='${2}'" +} + echo "HTTP/1.1 200 OK" echo "Content-Type: text/html" echo " @@ -37,30 +53,12 @@ echo " 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}'") - + id=$(insert_into "categories" "${category}") echo "Recorded new category '${category}' (id=${id})." ;; exercise) exercise=$(get_query_param exercise) - - query_db "\ - INSERT INTO exercises (name) - VALUES ('${exercise}')" - - id=$(query_db "\ - SELECT id - FROM exercises - WHERE name='${exercise}'") - + id=$(insert_into "exercises" "${exercise}") echo "Recorded new exercise '${exercise}' (id=${id})." ;; exercise_category) @@ -82,16 +80,7 @@ case ${RECORD_TYPE} in ;; gym) gym=$(get_query_param gym) - - query_db "\ - INSERT INTO gyms (name) - VALUES ('${gym}')" - - id=$(query_db "\ - SELECT id - FROM gyms - WHERE name='${gym}'") - + id=$(insert_into "gyms" "${gym}") echo "Recorded new gym '${gym}' (id=${id})." ;; workout)