Simple api which allows customers to split their bill, see SLO
// build and run the app
./gradlew build run
// stop the app
./gradlew stop
// migrate database
./gradlew flywayMigrate -i
// run unit tests
./gradlew unitTest
// run component tests
./gradlew componentTest
http://localhost:8000
{
"firstName": "john",
"lastName": "smith"
}
``
{
"meta": {
"status": "created"
},
"data": {
"id": 1,
"firstName": "john",
"lastName": "smith"
}
}
{
"meta": {
"status": "ok"
},
"data": [
{
"id": 1,
"firstName": "john",
"lastName": "smith"
},
{
"id": 2,
"firstName": "david",
"lastName": "jones"
}
]
}
{
"restaurant": "dominos",
"cuisine": "pizza",
"menu": [
{
"item": "margherita pizza",
"price": 5.99,
"available": true
},
{
"item": "pepperoni pizza",
"price": 9.99,
"available": false
}
]
}
{
"meta": {
"status": "created"
},
"data": {
"restaurant": "dominos",
"cuisine": "pizza",
"menu": [
{
"item": "margherita pizza",
"price": 5.99,
"available": true
},
{
"item": "pepperoni pizza",
"price": 9.99,
"available": false
}
]
}
}
{
"meta": {
"status": "ok"
},
"data": [
{
"restaurant": "dominos",
"cuisine": "pizza",
"menu": [
{
"item": "margherita pizza",
"price": 5.99,
"available": true
},
{
"item": "pepperoni pizza",
"price": 9.99,
"available": false
}
]
}
]
}
{
"customerId": 1,
"itemId": 1,
"discount": 0.0
}
{
"meta": {
"status": "created"
},
"data": {
"id": 1,
"customer": "john smith",
"items": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
}
]
}
}
{
"meta": {
"status": "ok"
},
"data": [
{
"id": 1,
"customer": "john smith",
"items": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
}
]
}
]
}
{
"customerId": 1,
"itemId": 1,
"discount": 0.5
}
{
"meta": {
"status": "created"
},
"data": {
"id": 1,
"customer": "john smith",
"items": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
},
{
"id": 2,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 2.99,
"discount": 0.5
}
]
}
}
{
"meta": {
"status": "created"
},
"data": {
"info": "Item #1 removed from order #1."
}
}
{
"meta": {
"status": "created"
},
"data": {
"info": "Order #1 deleted."
}
}
{
"customerId": 1,
"orderId": 1,
"orderedId": 1,
"pay": 5.99
}
{
"meta": {
"status": "created"
},
"data": [
{
"id": 1,
"customer": "john smith",
"ordered": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
}
],
"transactions": [
{
"id": 1,
"payee": "john smith",
"ordered": [
{
"id": 1,
"name": "margherita pizza"
}
],
"paid": 5.99,
"tip": 0.0
}
],
"totalOriginalPrice": 5.99,
"totalDiscount": 0,
"totalSavings": 0,
"totalCharged": 5.99,
"totalDue": 0,
"totalTip": 0,
"totalPaid": 5.99
}
]
}
{
"customerId": 1,
"orderId": 1,
"orderedId": 1,
"pay": 0.99
}
{
"meta": {
"status": "created"
},
"data": [
{
"id": 1,
"customer": "john smith",
"ordered": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
}
],
"transactions": [
{
"id": 1,
"payee": "john smith",
"ordered": [
{
"id": 1,
"name": "margherita pizza"
}
],
"paid": 5.99,
"tip": 0.0
},
{
"id": 2,
"payee": "john smith",
"ordered": [
{
"id": 1,
"name": "margherita pizza"
}
],
"paid": 0.0,
"tip": 0.99
}
],
"totalOriginalPrice": 5.99,
"totalDiscount": 0,
"totalSavings": 0,
"totalCharged": 5.99,
"totalDue": 0,
"totalTip": 0.99,
"totalPaid": 6.98
}
]
}
{
"meta": {
"status": "ok"
},
"data": [
{
"id": 1,
"customer": "john smith",
"ordered": [
{
"id": 1,
"item": {
"id": 1,
"name": "margherita pizza",
"originalPrice": 5.99
},
"priceCharged": 5.99,
"discount": 0.0
}
],
"transactions": [
{
"id": 1,
"payee": "john smith",
"ordered": [
{
"id": 1,
"name": "margherita pizza"
}
],
"paid": 5.99,
"tip": 0.0
},
{
"id": 2,
"payee": "john smith",
"ordered": [
{
"id": 1,
"name": "margherita pizza"
}
],
"paid": 0.0,
"tip": 0.99
}
],
"totalOriginalPrice": 5.99,
"totalDiscount": 0,
"totalSavings": 0,
"totalCharged": 5.99,
"totalDue": 0,
"totalTip": 0.99,
"totalPaid": 6.98
}
]
}