Welcome to Salon Appointment Scheduler project!
Follow the instructions and get all the user stories below to pass to finish the project. Create your database by logging in to psql with psql --username=freecodecamp --dbname=postgres. You can query the database in your script with psql --username=freecodecamp --dbname=salon -c "SQL QUERY HERE", add more flags if you need to. Be sure to get creative, and have fun!
Don't forget to connect to your database to add tables after you create it đ
Hints:
- Your script needs to finish running after doing any of the tasks described below or the tests won't pass
- The tests check the script output so don't use
clearor other commands which might erase it - See
examples.txtfor example output of a passing script - The tests may add data to your database, feel free to delete it
Notes:
If you leave your virtual machine, your database may not be saved. You can make a dump of it by entering pg_dump -cC --inserts -U freecodecamp salon > salon.sql in a bash terminal (not the psql one). It will save the commands to rebuild your database in salon.sql. The file will be located where the command was entered. If it's anything inside the project folder, the file will be saved in the VM. You can rebuild the database by entering psql -U postgres < salon.sql in a terminal where the .sql file is.
If you are saving your progress on freeCodeCamp.org, after getting all the tests to pass, follow the instructions above to save a dump of your database. Save the salon.sql file, as well as the final version of your salon.sh file, in a public repository and submit the URL to it on freeCodeCamp.org.
Complete the tasks below
- You should create a database named
salon - You should connect to your database, then create tables named
customers,appointments, andservices - Each table should have a primary key column that automatically increments
- Each primary key column should follow the naming convention,
table_name_id. For example, thecustomerstable should have acustomer_idkey. Note that thereâs nosat the end ofcustomer - Your
appointmentstable should have acustomer_idforeign key that references thecustomer_idcolumn from thecustomerstable - Your
appointmentstable should have aservice_idforeign key that references theservice_idcolumn from theservicestable - Your
customerstable should havephonethat is aVARCHARand must be unique - Your
customersandservicestables should have anamecolumn - Your
appointmentstable should have atimecolumn that is aVARCHAR - You should have at least three rows in your
servicestable for the different services you offer, one with aservice_idof1 - You should create a script file named
salon.shin theprojectfolder - Your script file should have a âshebangâ that uses bash when the file is executed (use
#! /bin/bash) - Your script file should have executable permissions
- You should not use the
clearcommand in your script - You should display a numbered list of the services you offer before the first prompt for input, each with the format
#) <service>. For example,1) cut, where1is theservice_id - If you pick a service that doesn't exist, you should be shown the same list of services again
- Your script should prompt users to enter a
service_id, phone number, a name if they arenât already a customer, and a time. You should usereadto read these inputs into variables namedSERVICE_ID_SELECTED,CUSTOMER_PHONE,CUSTOMER_NAME, andSERVICE_TIME - If a phone number entered doesnât exist, you should get the customers name and enter it, and the phone number, into the
customerstable - You can create a row in the
appointmentstable by running your script and entering1,555-555-5555,Fabio,10:30at each request for input if that phone number isnât in thecustomerstable. The row should have thecustomer_idfor that customer, and theservice_idfor the service entered - You can create another row in the
appointmentstable by running your script and entering2,555-555-5555,11amat each request for input if that phone number is already in thecustomerstable. The row should have thecustomer_idfor that customer, and theservice_idfor the service entered - After an appointment is successfully added, you should output the message
I have put you down for a <service> at <time>, <name>.For example, if the user choosescutas the service,10:30is entered for the time, and their name isFabioin the database the output would beI have put you down for a cut at 10:30, Fabio.Make sure your script finishes running after completing any of the tasks above, or else the tests won't pass