# 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` ```json { "type": "object", "properties": { "name": { "type": "string" }, "surname": { "type": "string" }, "pesel": { "type": "string" }, "initial": { "type": "number", "description": "początkowy stan konta w domyślnej walucie" } }, "required": [ "name", "surname", "pesel", "initial" ] } ``` ⇐ 204/400/409/500 - pobranie informacji o koncie ⇒ GET `/api/user/{pesel}` ⇐ 200/400/404/500 ```json { "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}` ```json { "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 ```mermaid 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 ``` ## Konfiguracja Aplikacja posiada dostosowaną konfigurację, która obejmuje własności: ### `hsqldb` Konfiguracja bazy danych | Nazwa | Opis | Typ | Wartość domyślna | |-------|------------------|--------|------------------| | name | host bazy danych | string | db | | port | port bazy danych | int | 9090 | ### `nbp` Konfiguracja połączenia z Narodowym Bankiem Polskim | Nazwa | Opis | Typ | Wartość domyślna | |---------|--------------|--------|-------------------| | baseurl | host API nbp | string | http://api.nbp.pl | ### `currency` Konfiguracja walut | Nazwa | Opis | Typ | Wartość domyślna | |---------|-----------------------------------------|--------|------------------| | initial | waluta początkowa przy zakładaniu konta | string | PLN |