From e48ba9c209912c63a6fe35e56c4d796fa5b66329 Mon Sep 17 00:00:00 2001 From: Rohit Amarnath <88762+ramarnat@users.noreply.github.com> Date: Tue, 23 Sep 2025 13:43:44 -0400 Subject: [PATCH] fix: enhance user creation logic in setup.sh for conflict resolution - Updated the user creation logic in setup.sh to handle conflicts more effectively. The script now updates the user's name and password if a conflict occurs on the email field, and similarly updates the user_id for conflicts on the username field. This change improves the robustness of user management by ensuring that existing user data is updated rather than ignored during the creation process. --- packages/db/setup.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/db/setup.sh b/packages/db/setup.sh index 54fc42e49..f10277059 100644 --- a/packages/db/setup.sh +++ b/packages/db/setup.sh @@ -44,10 +44,15 @@ if [ -f "$USERS_FILE" ] && [ -z "${NO_DEMO_USER}" ]; then psql --host $PG_HOST --username $POSTGRES_USER --dbname $PG_DB --command \ "INSERT INTO omnivore.user (id, source, email, source_user_id, name, password) VALUES ('$USER_ID', 'EMAIL', '$email', '$email', '$name', '$PASSWORD_HASH') - ON CONFLICT(email) DO NOTHING; + ON CONFLICT (email) DO UPDATE SET + name = EXCLUDED.name, + password = EXCLUDED.password; INSERT INTO omnivore.user_profile (user_id, username) - VALUES ('$USER_ID', '$username') - ON CONFLICT(user_id) DO NOTHING;" || true + SELECT omnivore.user.id, '$username' + FROM omnivore.user + WHERE email = '$email' + ON CONFLICT (username) DO UPDATE SET + user_id = EXCLUDED.user_id;" || true echo "Created user: $email" done @@ -73,10 +78,15 @@ elif [ -z "${NO_DEMO_USER}" ]; then psql --host $PG_HOST --username $POSTGRES_USER --dbname $PG_DB --command \ "INSERT INTO omnivore.user (id, source, email, source_user_id, name, password) VALUES ('$USER_ID', 'EMAIL', '$DEMO_EMAIL', '$DEMO_EMAIL', '$DEMO_NAME', '$DEMO_PASSWORD_HASH') - ON CONFLICT(email) DO NOTHING; + ON CONFLICT (email) DO UPDATE SET + name = EXCLUDED.name, + password = EXCLUDED.password; INSERT INTO omnivore.user_profile (user_id, username) - VALUES ('$USER_ID', '$DEMO_USERNAME') - ON CONFLICT(user_id) DO NOTHING;" + SELECT omnivore.user.id, '$DEMO_USERNAME' + FROM omnivore.user + WHERE email = '$DEMO_EMAIL' + ON CONFLICT (username) DO UPDATE SET + user_id = EXCLUDED.user_id;" echo "Created demo user with email: $DEMO_EMAIL" fi