/AirBnB_clone

AirBnB_clone project

Primary LanguagePython

Screenshot from 2024-02-13 17-22-29

Description/DEtails of the project

This is aproject Airbnb clone is a complete web application, integrating database storage, a back-end API, and front-end interfacing in a clone of AirBnB Description 🏠

This project Airbnb clone is a complete web application, integrating database storage, a back-end API, and front-end interfacing in a clone of AirBnB

Clasess

AirBnB utilizes the following classes:

                                BaseModel         FileStorage        User                  State         Amenity                City                             Place                  Reviews 

PUBLIC INSTANCE METHODS save to _dict all new reload "" "" "" "" "" ""

PUBLIC CLASS ATTRIBUTES email name state_id name password first_name last_name

PRIVATE CLASS ATTRIBUTES file_path objects

PUBLIC INSTANCE ATTRIBUTES id created_at Inherits from BaseModel Inherits from BaseModel Inherits from BaseModel Inherits from BaseModel Inherits from BaseModel updated_at

Console 💻

This is usually a console is a command line interpreter that permits management of the backend of AirBnB. It can be used to handle and manipulate all classes utilized by the application (achieved by calls on the storage object defined above).

Using the Console The AirBnB console can be run both interactively and non-interactively. To run the console in non-interactive mode, pipe any command(s) into an execution of the file console.py at the command line.

$ echo "help" | ./console.py (hbnb) Documented commands (type help ):

EOF all count create destroy help quit show update

(hbnb) $ Alternatively, to use the AirBnB console in interactive mode, run the file console.py by itself:

$ ./console.py While running in interactive mode, the console displays a prompt for input:

$ ./console.py (hbnb) To quit the console, enter the command quit, or input an EOF signal (ctrl-D).

$ ./console.py (hbnb) quit $ $ ./console.py (hbnb) EOF $ Console Commands

The AirBnB console supports the following commands:

create

Usage: create Creates a new instance of a given class. The class' ID is printed and the instance is saved to the file file.json.

show

Usage: show or .show() Prints the string representation of a class instance based on a given id.

$ ./console.py (hbnb) create User (hbnb) (hbnb) show User uid (hbnb) (hbnb) User.show(uid) (hbnb)

destroy

Usage: destroy or .destroy() Deletes a class instance based on a given id. The storage file file.json is updated accordingly.

$ ./console.py (hbnb) create State (hbnb) create Place (hbnb) (hbnb) destroy State uid (hbnb) Place.destroy(uid) (hbnb) quit $ cat file.json ; echo "" {} all Usage: all or all or .all() Prints the string representations of all instances of a given class. If no class name is provided, the command prints all instances of every class.

$ ./console.py (hbnb) create BaseModel (hbnb) create BaseModel (hbnb) create User (hbnb) create User (hbnb) (hbnb) all BaseModel (hbnb) (hbnb) User.all() (hbnb) (hbnb) all

count

Usage: count or .count() Retrieves the number of instances of a given class.

$ ./console.py (hbnb) create Place (hbnb) create Place (hbnb) create City (hbnb) (hbnb) count Place 2 (hbnb) city.count() 1 (hbnb)

update

Usage: update "" or .update(, , ) or .update( , ). Updates a class instance based on a given id with a given key/value attribute pair or dictionary of attribute pairs. If update is called with a single key/value attribute pair, only "simple" attributes can be updated (ie. not id, created_at, and updated_at). However, any attribute can be updated by providing a dictionary.

$ ./console.py (hbnb) create User (hbnb) (hbnb) update User id first_name "name" (hbnb) show User uid (hbnb) (hbnb) User.update(uid), address, "address") (hbnb) User.show(uid) (hbnb) (hbnb) User.update(uid, {'email': 'email', 'last_name': 'last_name'}) (hbnb)

Testing 📏

Unittests for the Airbnb_clone project are defined in the tests folder. To run the entire test suite simultaneously, execute the following command:

$ python3 unittest -m discover tests Alternatively, you can specify a single test file to run at a time:

$ python3 unittest -m tests/test_console.py Authors ✒️ < Duncan Mwangi >