Hey folks,
I’m hungry for this certificate, it’s been a long and trouble full road going through it. I would highly appreciate if someone could spare a minute to go over my code and see why I can’t pass these two tricky tests I’ve been trying to pass for hours.
The program functions as expected and I can see the test users in PSQL afterwards, but these two tests never seem to pass.
Here is my number_guess.sh:
#!/bin/bash
PSQL="psql -X --username=freecodecamp --dbname=users --no-align --tuples-only -c"
NUMBER=$(( $RANDOM % 1000 + 1 ))
echo -e "\nEnter your username:"
read USERNAME
USERID=$($PSQL "SELECT user_id FROM users WHERE username='$USERNAME'")
if [[ ! -z $USERID ]]
then
GAMES_PLAYED=$($PSQL "SELECT games_played FROM users WHERE username='$USERNAME'")
BEST_GAME=$($PSQL "SELECT best_game FROM users WHERE username='$USERNAME'")
echo "Welcome back, $USERNAME! You have played $GAMES_PLAYED games, and your best game took $BEST_GAME guesses."
else
echo "Welcome, $USERNAME! It looks like this is your first time here."
$PSQL "INSERT INTO users(username) VALUES('$USERNAME')" | echo
GAMES_PLAYED=0
BEST_GAME=0
fi
echo -e "\nGuess the secret number between 1 and 1000:"
GUESSES() {
read GUESS
COUNTER=$1
if [[ $GUESS =~ ^[0-9]+$ ]]
then
if [[ $GUESS = $NUMBER ]]
then
echo -e "You guessed it in $COUNTER tries. The secret number was $GUESS. Nice job!"
$PSQL "UPDATE users SET games_played='$(( $GAMES_PLAYED + 1 ))' WHERE username='$USERNAME'" | echo
if [[ $COUNTER < $BEST_GAME || $BEST_GAME = 0 ]]
then
$PSQL "UPDATE users SET best_game='$COUNTER' WHERE username='$USERNAME'" | echo
fi
elif [[ $GUESS > $NUMBER ]]
then
echo -e "It's lower than that, guess again:\n"
GUESSES $(( $COUNTER + 1 ))
else
echo -e "It's higher than that, guess again:\n"
GUESSES $(( $COUNTER + 1 ))
fi
else
echo -e "That is not an integer, guess again:\n"
GUESSES $COUNTER
fi
}
GUESSES 1
and here is SQL dump:
--
-- PostgreSQL database dump
--
-- Dumped from database version 12.9 (Ubuntu 12.9-2.pgdg20.04+1)
-- Dumped by pg_dump version 12.9 (Ubuntu 12.9-2.pgdg20.04+1)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
DROP DATABASE users;
--
-- Name: users; Type: DATABASE; Schema: -; Owner: freecodecamp
--
CREATE DATABASE users WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'C.UTF-8' LC_CTYPE = 'C.UTF-8';
ALTER DATABASE users OWNER TO freecodecamp;
\connect users
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: users; Type: TABLE; Schema: public; Owner: freecodecamp
--
CREATE TABLE public.users (
user_id integer NOT NULL,
username character varying(30) NOT NULL,
games_played integer,
best_game integer
);
ALTER TABLE public.users OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE; Schema: public; Owner: freecodecamp
--
CREATE SEQUENCE public.users_user_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.users_user_id_seq OWNER TO freecodecamp;
--
-- Name: users_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: freecodecamp
--
ALTER SEQUENCE public.users_user_id_seq OWNED BY public.users.user_id;
--
-- Name: users user_id; Type: DEFAULT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users ALTER COLUMN user_id SET DEFAULT nextval('public.users_user_id_seq'::regclass);
--
-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: freecodecamp
--
--
-- Name: users_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: freecodecamp
--
SELECT pg_catalog.setval('public.users_user_id_seq', 113, true);
--
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_pkey PRIMARY KEY (user_id);
--
-- Name: users users_username_key; Type: CONSTRAINT; Schema: public; Owner: freecodecamp
--
ALTER TABLE ONLY public.users
ADD CONSTRAINT users_username_key UNIQUE (username);
--
-- PostgreSQL database dump complete
--
Thank you!
Vlad