Rental Bike - Can't pass the SET_TO_TRUE_RESULT test

Tell us what’s happening:

Hello there, I wrote the variable SET_TO_TRUE_RESULT as the test wanted but It doesnt accept it. I resetted it closed everything started again but still cant pass it.

I can see the rental date_returned updates in else statement but if I write echo there I cant see it.

It is below the comment

Your code so far


#!/bin/bash
PSQL="psql -X --username=freecodecamp --dbname=bikes --tuples-only -c"

echo -e "\n~~~~~ Bike Rental Shop ~~~~~\n"

MAIN_MENU() { 
  if [[ $1 ]]
  then 
    echo -e "\n$1"
  fi
  echo -e "\nHow may I help you?"

  echo -e "\n1. Rent a bike\n2. Return a bike\n3. Exit\n"

  read MAIN_MENU_SELECTION
}

MAIN_MENU

#$($PSQL "")
RENT_MENU() {
  #get available bikes
  AVAILABLE_BIKES=$($PSQL "SELECT bike_id, type, size FROM bikes WHERE available=true ORDER BY bike_id")
  
  #if no bikes available
  if [[ -z $AVAILABLE_BIKES ]]
  then
    #send to main menu
    MAIN_MENU "\nSorry, we don't have any bikes available right now."
  else
    #display available bikes

    echo -e "\nHere are the bikes we have available:"

    echo  "$AVAILABLE_BIKES" | while read BIKE_ID BAR TYPE BAR SIZE
    do
      echo "$BIKE_ID) $SIZE\" $TYPE Bike"
    done


    #ask for bike to rent
    echo -e "\nWhich one would you like to rent?"
    read BIKE_ID_TO_RENT
    #if input is not a number
    if [[ ! $BIKE_ID_TO_RENT =~ ^[0-9]+$ ]]
    then
      #send to main menu
      MAIN_MENU "That is not a valid bike number."
    else
      #get bike availability

      BIKE_AVAILABILITY=$($PSQL "SELECT available FROM bikes WHERE bike_id=$BIKE_ID_TO_RENT AND available=true")

      #if not available
      if [[ -z $BIKE_AVAILABILITY ]]
      then
      #send to main menu
      MAIN_MENU "That bike is not available."
      else
        #get customer info
        echo -e "\nWhat's your phone number?"
        read PHONE_NUMBER
        CUSTOMER_NAME=$($PSQL "SELECT name FROM customers WHERE phone='$PHONE_NUMBER'")
        
        #if customer doesn't exist
        if [[ -z $CUSTOMER_NAME ]]
        then
          #get new customer name
          echo -e "\nWhat's your name?"
          read CUSTOMER_NAME
          #insert new customer
          INSERT_CUSTOMER_RESULT=$($PSQL "INSERT INTO customers(phone,name) VALUES('$PHONE_NUMBER','$CUSTOMER_NAME')")
        fi

        # get customer_id
        CUSTOMER_ID=$($PSQL "SELECT customer_id FROM customers WHERE phone='$PHONE_NUMBER'")
        # insert bike rental
        INSERT_RENTAL_RESULT=$($PSQL "INSERT INTO rentals(customer_id,bike_id) VALUES('$CUSTOMER_ID',$BIKE_ID_TO_RENT)")
        # set bike availability to false
        SET_TO_FALSE_RESULT=$($PSQL "UPDATE bikes SET available=false WHERE bike_id=$BIKE_ID_TO_RENT")
        # get bike info
        BIKE_INFO=$($PSQL "SELECT size,type FROM bikes WHERE bike_id='$BIKE_ID_TO_RENT'")
        
        BIKE_INFO_FORMATTED=$(echo $BIKE_INFO | sed 's/ |/"/')
        # send to main menu

        MAIN_MENU "I have put you down for the $BIKE_INFO_FORMATTED Bike, $(echo $CUSTOMER_NAME | sed -r 's/^ *| *$//g')."
        
      fi
    fi
  fi
}

RETURN_MENU() {
  # get customer info
  echo -e "\nWhat's your phone number?"
  read PHONE_NUMBER
  CUSTOMER_ID=$($PSQL "SELECT customer_id FROM customers WHERE phone='$PHONE_NUMBER'")
  # if not found
  if [[ -z $CUSTOMER_ID ]] 
  then
    # send to main menu
    MAIN_MENU "I could not find a record for that phone number."
  else
    # get customer's rentals
    CUSTOMER_RENTALS=$($PSQL "SELECT bike_id,type,size FROM bikes INNER JOIN rentals USING(bike_id) INNER JOIN customers USING (customer_id) WHERE phone='$PHONE_NUMBER' AND date_returned IS NULL ORDER BY bike_id")
    
     # if no rentals
   if [[ -z $CUSTOMER_RENTALS ]]
    then
      # send to main menu
      MAIN_MENU "You do not have any bikes rented."
    else
      # display rented bikes
        echo -e "\nHere are your rentals:"
        echo "$CUSTOMER_RENTALS" | while read BIKE_ID BAR TYPE BAR SIZE
    do
      echo "$BIKE_ID) $SIZE\" $TYPE Bike"
    done

      # ask for bike to return
      echo -e "\nWhich one would you like to return?"
      read BIKE_ID_TO_RETURN
      # if not a number
       if [[ ! $BIKE_ID_TO_RETURN =~ ^[0-9]+$ ]]
       then
          # send to main menu
          MAIN_MENU "That is not a valid bike number."
      else
      # check if input is rented
      RENTAL_ID=$($PSQL "select rental_id from rentals inner join customers using(customer_id) where phone='$PHONE_NUMBER' and date_returned is null and bike_id=$BIKE_ID_TO_RETURN")
      
      # if input not rented
      
      if [[ -z $RENTAL_ID ]]
      then
            # send to main menu
            MAIN_MENU "You do not have that bike rented."
      else
        # update date_returned
          RETURN_BIKE_RESULT=$($PSQL "UPDATE rentals SET date_returned=NOW() WHERE rental_id=$RENTAL_ID")
        #set bike availability to true
        SET_TO_TRUE_RESULT=$($PSQL "UPDATE bikes SET available = true WHERE bike_id = $BIKE_ID_TO_RETURN")
          
        # send to main menu

      fi
      fi
     
    fi
  fi
}

EXIT() {
  echo -e "\nThank you for stopping in.\n"
}

case $MAIN_MENU_SELECTION in
1) RENT_MENU;;
2) RETURN_MENU;;
3) EXIT;;
*)  MAIN_MENU "Please enter a valid option."
  ;;
esac

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36

Challenge: Learn Bash and SQL by Building a Bike Rental Shop - Build a Bike Rental Shop

Link to the challenge:

Could you post the text of the challenge for the step you’re having issues with? I can’t remember what the requirements for the SET_TO_TRUE_RESULT were.

That should update the rentals table. Lastly, you need to make the bike available again. Below the set bike availability to true comment, create a SET_TO_TRUE_RESULT variable that makes the bike available again.

Here it is

Looks good to me… maybe spacing? I had some tests that didn’t accept my input until I added a new line after it, or changed spacing a little(like between equal signs like your query above it), or sometimes deleted and re-wrote it… was a bit buggy when I completed it a few weeks ago.

I tried it. Even copied someone elses answer. Put lots of spaces before and after but no avail.

Thanks for your interest tho.

After some time I went back to it and it worked. I don’t know how tho.