# Overview

This server was generated by the [swagger-codegen](https://github.com/swagger-api/swagger-codegen) project.  
By using the [OpenAPI-Spec](https://github.com/swagger-api/swagger-core), you can easily generate a server stub.  
This is an example of building a swagger-enabled server in Java using the SpringBoot framework.

The underlying library integrating swagger to SpringBoot is [springfox](https://github.com/springfox/springfox)

Start your server as an simple java application.

You can view the api documentation in swagger-ui by pointing to
[http://localhost:8080/api/swagger-ui.html](http://localhost:8080/api/swagger-ui.html)

Change default port value in `src/main/resources/application.properties`

## Build the project

1. Install Maven [https://maven.apache.org/install.html](https://maven.apache.org/install.html) and setup the environment path accordingly

2. Go into the project root directory that has the pom.xml and run `mvn package`

## Run only the unit tests

`mvn test`

## Run the application

1. Modify the `src/main/resources/application.properties` values with valid SQL Server values.

   ```java
   spring.datasource.url=someurl
   spring.datasource.username=username
   spring.datasource.password=password
   ```

1. Start the API: `mvn spring-boot:run`

### POST API Example

This curl command creates a new user with ID 1234.

```bash
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \
   "createdAt":"2018-08-07", \
   "deleted": false, \
   "firstName": "Hacker", \
   "fuelConsumption": 0, \
   "hardAccelerations": 0, \
   "hardStops": 0, \
   "id": "1234", \
   "lastName": "Test", \
   "maxSpeed": 0, \
   "profilePictureUri": "https://pbs.twimg.com/profile_images/1003946090146693122/IdMjh-FQ_bigger.jpg", \
   "ranking": 0, \
   "rating": 0, \
   "totalDistance": 0, \
   "totalTime": 0, \
   "totalTrips": 0, \
   "updatedAt": "2018-08-07", \
   "userId": "Hacker3" \
 }' 'http://localhost:8080/api/user/1234'
```

### PATCH API Example

This updates the `fuelConsumption` and `hardStops` fields from the user created above.

```bash
curl -X PATCH --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \
  "fuelConsumption":20, \
  "hardStops":74371 \
}
```
