No description
.woodpecker | ||
src | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
pom.xml | ||
readme.md |
Wymiana walut
Prosty mikroserwis stworzony na potrzeby rekrutacji
Założenia
- PESEL jedynym identyfikatorem
- Jedno konto na PESEL
- Użytkownik pełnoletni
- Wymiana walut na podstawie tabeli NBP
- Baza danych in-memory
Interfejsy
-
stworzenie konta
⇒ POST
/api/user
{ "type": "object", "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "pesel": { "type": "string" }, "pln": { "type": "number", "description": "początkowy stan konta w złotówkach" } }, "required": [ "name", "surname", "pesel", "initial" ] }
⇐ 204/400/409/500
-
pobranie informacji o koncie
⇒ GET
/api/user/{pesel}
⇐ 200/400/404/500
{ "type": "object", "def": { "currency": { "type": "object", "properties": { "symbol": { "type": "string" }, "amount": { "type": "number" } }, "required": [ "symbol", "amount" ] } }, "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "pesel": { "type": "string" }, "currencies": { "type": "array", "items": { "$ref": "#/def/currency" } } }, "required": [ "name", "surname", "pesel", "currencies" ] }
-
zlecenie wymiany walut
⇒ POST
/api/exchange/{pesel}
{ "type": "object", "properties": { "pesel": { "type": "string" }, "from": { "type": "string", "description": "waluta źródłowa" }, "to": { "type": "string", "description": "waluta docelowa" }, "toBuy": { "type": "number", "description": "ilość do zakupu" }, "toSell": { "type": "number", "description": "ilość do sprzedaży" } }, "oneOf": [ { "required": [ "pesel", "from", "to", "toBuy" ] }, { "required": [ "pesel", "from", "to", "toSell" ] } ] }
⇐ 200/400/404/500
patrz: pobranie informacji o koncie
Architektura
flowchart LR
actor["fa:fa-person"]
subgraph NBP
tabC["Tabela C"]
end
subgraph proces
subgraph spring-boot
core
subgraph endpoint
user
exchange
end
end
hsqldb
end
actor <--> user
actor <--> exchange
endpoint <--> core
core <--> tabC
core <-- hsql.port --> hsqldb