An open API service indexing awesome lists of open source software.

https://github.com/zoglam/hotel_management_api

Hotel management API
https://github.com/zoglam/hotel_management_api

mysql rest-api

Last synced: 6 months ago
JSON representation

Hotel management API

Awesome Lists containing this project

README

          

# Contents hotel_management_api
- [Contents hotel_management_api](#contents-hotel_management_api)
- [Cmd](#cmd)
- [Docker-compose](#docker-compose)
- [API Documentation](#api-documentation)
- [`POST` hotel_room/create](#post-hotel_roomcreate)
- [`DELETE` hotel_room/delete/](#delete-hotel_roomdeleteroom_id)
- [`GET` hotel_room/list](#get-hotel_roomlist)
- [`POST` bookings/create](#post-bookingscreate)
- [`DELETE` bookings/delete/](#delete-bookingsdeletebooking_id)
- [`GET` bookings/list](#get-bookingslist)
- [Database scheme](#database-scheme)
# Cmd
Prepare
```sh
go mod download
```
and setting up config files in ./config

Test
```sh
...
```
Run
```sh
go run app/main.go
```
**[⬆ Back to Top](#Contents-hotel_management_api)**
# Docker-compose

Build and Run
```sh
docker-compose up --build -d
```
Down
```sh
docker-compose down
```
**[⬆ Back to Top](#Contents-hotel_management_api)**
# API Documentation
## `POST` hotel_room/create
**Метод для добавления номера отеля.**
Принимает на вход текстовое описание и цену за ночь. Возвращает ID номера отеля.

### Parameters

| Name | Description |
| ----------------------- | ------------------ |
| discription `*required` | Текстовое описание |
| price `*required` | Цена за ночь |

### Example

Valid
```sh
curl -X POST -d "discription=test_discription" -d "price=99.99" http://localhost:8080/hotel_room/create
```

Invalid
```sh
curl -X POST -d "discription=test_discription" -d "price=99.b99" http://localhost:8080/hotel_room/create
```

### Response


Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status": "True",
"details": [
{
"room_id": "3"
}
]
}
```

400

Ошибка запроса, если отправлена невалидная цена (e.g. 99.b99)

Example Value:

```json
{
"status": "False",
"details": "Error 1265: Data truncated for column 'price' at row 1"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**


## `DELETE` hotel_room/delete/
**Метод для удаления номера отеля и всех его броней.**
Принимает на вход ID номера отеля.

### Parameters


Name
Description


room_id *required
ID номера отеля. Передается в адресной строке

### Example

Valid
```sh
curl -X DELETE http://localhost:8080/hotel_room/delete/99
```

### Response

Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status":"True",
"details": [
{
"booking_id": "99"
}
]
}
```

400

Ошибка запроса

Example Value:

```json
{
"status": "False",
"details": "Error discription"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**


## `GET` hotel_room/list
**Метод для получения списка номеров отеля.** Есть возможность отсортировать по цене или по дате добавления (по возрастанию и убыванию)

### Parameters

| Name | Description |
| -------- | ---------------------------------------------------------------------------------------------------------------- |
| order_by | Параметр по которому сортировать. Возможные варианты: `price`, `price DESC`, `data_created`, `data_created DESC` |

### Example

Valid
```sh
curl http://localhost:8080/hotel_room/list?order_by=price
```

Invalid
```sh
curl http://localhost:8080/hotel_room/list?order_by=udmurtia
```

### Response

Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status": "True",
"details": [
{
"hotel_id": 1,
"discription": "test_discription",
"price": 10.11,
"date_created": "2021-01-12"
},
{
"hotel_id": 2,
"discription": "test_discription",
"price": 69.24,
"date_created": "2021-01-12"
},
{
"hotel_id": 3,
"discription": "test_discription",
"price": 99.99,
"date_created": "2021-01-12"
}
]
}
```

400

Ошибка запроса

Example Value:

```json
{
"status": "False",
"details": "Error 1054: Unknown column 'udmurtia' in 'order clause'"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**


## `POST` bookings/create
**Метод для добавления брони.** Принимает на вход существующий ID номера отеля, дату начала, дату окончания брони. Возвращает ID брони.

### Parameters

| Name | Description |
| ---------------------- | ---------------------------- |
| room_id `*required` | существующий ID номера отеля |
| date_start `*required` | дата начала брони |
| date_end `*required` | дата окончания брони |

### Example

```sh
curl -X POST -d "room_id=1" -d "date_start=2021-12-30" -d "date_end=2022-01-02" http://localhost:8080/bookings/create
```

### Response

Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status":"True",
"details": [
{
"booking_id": "1"
}
]
}
```

400

Ошибка запроса

Example Value:

```json
{
"status": "False",
"details": "Error discription"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**


## `DELETE` bookings/delete/
**Метод для удаления брони.** Принимает на вход ID брони.

### Parameters

| Name | Description |
| ---------------------- | -------------------------------------- |
| booking_id `*required` | ID брони. Передается в адресной строке |

### Example

```sh
curl -X DELETE http://localhost:8080/bookings/delete/99
```

### Response

Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status":"True",
"details": [
{
"booking_id": "99"
}
]
}
```

400

Ошибка запроса

Example Value:

```json
{
"status": "False",
"details": "Error discription"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**


## `GET` bookings/list
**Метод для получения списока броней номера отеля.** Принимает на вход ID номера отеля. Возвращает список бронирований, каждое бронирование содержит ID, дату начала, дату окончания. Бронирования отсортированы по дате начала.

### Parameters

| Name | Description |
| ------------------- | --------------- |
| room_id `*required` | ID номера отеля |

### Example

Valid
```sh
curl http://localhost:8080/bookings/list?room_id=1
```

Invalid
```sh
curl http://localhost:8080/bookings/list?room_id=word
```

### Response

Status
Response

200

Запрос успешно обработан

Example Value:

```json
{
"status": "True",
"details": [
{
"booking_id": 2,
"date_start": "2020-05-10",
"date_end": "2020-10-10"
},
{
"booking_id": 1,
"date_start": "2020-06-10",
"date_end": "2020-07-10"
}
]
}
```

400

Ошибка запроса

Example Value:

```json
{
"status": "False",
"details": "strconv.ParseUint: parsing \"word\": invalid syntax"
}
```

**[⬆ Back to Top](#Contents-hotel_management_api)**

# Database scheme

[](https://live.staticflickr.com/65535/50827301056_0122698ce8_h.jpg)

**[⬆ Back to Top](#Contents-hotel_management_api)**