Skip to content

LukaszKrolicki/SwiftProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftCodesProject

SwiftCodesProject to aplikacja napisana w Spring Boot, która korzysta z PostgreSQL jako bazy danych.
Projekt jest w pełni skonteneryzowany.

📦 Wymagania

Przed uruchomieniem upewnij się, że masz zainstalowane:

🚀 Jak uruchomić aplikację?

  1. Sklonuj repozytorium
git clone https://github.com/twoj-username/swiftcodesproject.git
cd swiftcodesproject
Uruchom aplikację za pomocą Docker Compose
  1. Uruchom aplikację za pomocą Docker Compose
docker-compose up --build

To polecenie zbuduje i uruchomi aplikację Spring Boot oraz bazę danych PostgreSQL.

Aplikacja będzie dostępna pod adresem http://localhost:8080.

PostgreSQL działa na porcie 5430 (przekierowanym z 5432).

po poprawnym uruchomieniu powinno to wyglądać w następujący sposób:

image

🏗 Technologie

-Spring Boot – Backend

-PostgreSQL – Baza danych

-Docker – Konteneryzacja

Struktura

image

📂 config/

➡ Konfiguracja aplikacji – zawiera klasy ładujące dane z csv do bazy danych oraz ustawiające mappery

📂 controllers/

➡ Warstwa kontrolerów – obsługuje żądania HTTP i przekazuje je do serwisów.

📂 domain/

➡ Modele danych (encje) – klasy reprezentujące tabele w bazie danych oraz DTO.

📂 exceptions/

➡ Obsługa wyjątków – niestandardowe wyjątki i ich obsługa w aplikacji.

📂 mappers/

➡ Konwersja encji do DTO – mapowanie obiektów domenowych na DTO i odwrotnie.

📂 repositories/

➡ Warstwa dostępu do danych (DAO) – interfejsy do komunikacji z bazą danych przy użyciu Spring Data JPA.

📂 services/

➡ Logika biznesowa aplikacji – operacje na danych i komunikacja z repozytoriami.

Analiza danych, walidacja oraz wczytywanie z csv do postgre

Wstępna analiza danych wykazała:

image

Klasa config/Dataloader wczytuje dane i przeprowadza ich walidacje za pomocą klasy services/SwiftCodeLoadService. Dodatkowo przeprowadza test czy liczba wgranych wierszy / oddziałów itp się zgadza. Na początku wgrywane są bazy typu "Headquarters" , aby następnie można było dokonać powiązania dla branches

Endpointy

Endpointy zdefiniowane są w /controllers/SwiftCodesController, korzystają z /services/SwiftCodeService

Get Swift-Code details

Dla "branch":

image

Dla "headquarters" dołączane są również jego odziały:

image

Get Swift-Codes by Country

image

Add Swift-Code

W metodzie dodającej Swift-codes zachodzi kilka etapów walidacji:

  • Metoda sprawdza, czy dany kod SWIFT już istnieje w bazie.

  • Metoda sprawdza, czy kod SWIFT ma dokładnie 11 znaków

  • Pobierane są ostatnie 3 znaki kodu SWIFT i konwertowane na wielkie litery. Jeśli to "XXX", to oznacza, że jest to główna siedziba banku (isHeadquarter = true).

  • Jeśli którekolwiek z pól (address, bankName, countryISO2, countryName) są puste, rzuca wyjątek.

  • Kody krajów są konwertowane na wielkie litery, by zachować spójność.

Dodawanie "headquarter":

image

Dodawanie "branch::

image

Wynik:

image

Usuwanie SWIFT-CODE:

usunięcie swift-code, aktualizuje również wartości jego odziałów na null

image

Wynik:

image

Projekt zawiera również testy jednostkowe oraz integracyjne

image

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages