Skip to content

AirBnB Clone is forked from the AirBnB_clone Console, this forked repository help create a Front-end platform for the AirBnb_clone console project. This project is a requirement for the fulfilment of the award of software engineering certificate from ALX_Africa.

Notifications You must be signed in to change notification settings

Gideon-Esq/AirBnB_clone

This branch is 27 commits ahead of, 36 commits behind EmmanuelOnyekachi21/AirBnB_clone:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b2f1c5a · Aug 4, 2024

History

87 Commits
May 19, 2024
May 20, 2024
Aug 4, 2024
May 19, 2024
May 19, 2024
May 20, 2024

Repository files navigation

AirBnB Clone Console

AirBnB Clone Console is a Python project aimed at replicating the functionality of Airbnb through a command-line interface. This project allows users to manage properties, users, bookings, and more, all within the console environment.

AirBnB Logo Holberton Logo

Features

  • Creating new objects (ex: a new User, a new Place, a new City, a new BaseModel, e.t.c)
  • Retrieving an object from a file, a database etc…
  • Doing operations on objects (count, compute stats, etc…)
  • Updating attributes of an object
  • Destroying an object

Installation

  1. Clone the repository:
git clone git@github.com:EmmanuelOnyekachi21/AirBnB_clone.git
  1. Navigate to the project directory:
cd AirBnB_clone
  1. Run the console:
./console.py

In here are the files that allows the program to work.

./console.py : The main executable of the project, the command interpreter.

models/engine/file_storage.py: Class that serializes instances to a JSON file and deserializes JSON file to instances

models/__ init __.py: A unique FileStorage instance for the application

models/base_model.py: Class that defines all common attributes/methods for other classes.

models/user.py: User class that inherits from BaseModel

models/state.py: State class that inherits from BaseModel

models/city.py: City class that inherits from BaseModel

models/amenity.py: Amenity class that inherits from BaseModel

models/place.py: Place class that inherits from BaseModel

models/review.py: Review class that inherits from BaseModel

How to Use It

Once the command interpreter is running, you can use the following commands:

  • create: Create a new instance of BaseModel
  • show: Prints the string representation of an instance based on the class name and id
  • destroy: Deletes an instance based on the class name and id (save the change into the JSON file).
  • all: Prints all string representation of all instances based or not on the class name.
  • update: Updates an instance based on the class name and id by adding or updating attribute (save the change into the JSON file).
  • help or ?: Display help message.

Examples

Here are some examples of using the command interpreter:

It can work in two different modes:

Interactive and Non-interactive.

In Interactive mode, the console will display a prompt (hbnb) indicating that the user can write and execute a command. After the command is run, the prompt will appear again a wait for a new command. This can go indefinitely as long as the user does not exit the program.

$ ./console.py
(hbnb) help

Documented commands (type help <topic>):
========================================
EOF  help  quit

(hbnb) 
(hbnb) 
(hbnb) quit
$

In Non-interactive mode, the shell will need to be run with a command input piped into its execution so that the command is run as soon as the Shell starts. In this mode no prompt will appear, and no further input will be expected from the user.

$ echo "help" | ./console.py
(hbnb)

Documented commands (type help <topic>):
========================================
EOF  help  quit
(hbnb) 
$
$ cat test_help
help
$
$ cat test_help | ./console.py
(hbnb)

Documented commands (type help <topic>):
========================================
EOF  help  quit
(hbnb) 
$

Format of Command Input

In order to give commands to the console, these will need to be piped through an echo in case of Non-interactive mode.

In Interactive Mode the commands will need to be written with a keyboard when the prompt appears and will be recognized when an enter key is pressed (new line). As soon as this happens, the console will attempt to execute the command through several means or will show an error message if the command didn't run successfully. In this mode, the console can be exited using the CTRL + D combination, CTRL + C, or the command quit or EOF.

Arguments

Most commands have several options or arguments that can be used when executing the program. In order for the Shell to recognize those parameters, the user must separate everything with spaces.

Example:


user@ubuntu:~/AirBnB$ ./console.py
(hbnb) create BaseModel
49faff9a-6318-451f-87b6-910505c55907
user@ubuntu:~/AirBnB$ ./console.py

or

user@ubuntu:~/AirBnB$ ./console.py $ echo "create BaseModel" | ./console.py
(hbnb)
e37ebcd3-f8e1-4c1f-8095-7a019070b1fa
(hbnb)
user@ubuntu:~/AirBnB$ ./console.py

Commands

The recognizable commands by the interpreter are the following:

Command Description
quit or EOF Exits the program
Usage By itself
----- -----
help Provides a text describing how to use a command.
Usage By itself --or-- help <command>
----- -----
create Creates a new instance of a valid Class, saves it (to the JSON file) and prints the id. Valid classes are: BaseModel, User, State, City, Amenity, Place, Review.
Usage create <class name>
----- -----
show Prints the string representation of an instance based on the class name and id
Usage show <class name> <id> --or-- <class name>.show(<id>)
----- -----
destroy Deletes an instance based on the class name and id (saves the change into a JSON file).
Usage destroy <class name> <id> --or-- .destroy()
----- -----
all Prints all string representation of all instances based or not on the class name.
Usage By itself or all <class name> --or-- <class name>.all()
----- -----
update Updates an instance based on the class name and id by adding or updating attribute (saves the changes into a JSON file).
Usage update <class name> <id> <attribute name> "<attribute value>" ---or--- <class name>.update(<id>, <attribute name>, <attribute value>) --or-- <class name>.update(<id>, <dictionary representation>)
----- -----
count Retrieve the number of instances of a class.
Usage <class name>.count()

About

AirBnB Clone is forked from the AirBnB_clone Console, this forked repository help create a Front-end platform for the AirBnb_clone console project. This project is a requirement for the fulfilment of the award of software engineering certificate from ALX_Africa.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 72.3%
  • HTML 19.3%
  • CSS 8.4%