# πŸš€ USER SERVICE - QUICK START ## πŸ“¦ Struktura projektu ``` userService/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ main/ β”‚ β”‚ β”œβ”€β”€ java/pl/dmcs/userservice/ β”‚ β”‚ β”‚ β”œβ”€β”€ controller/ # REST endpoints β”‚ β”‚ β”‚ β”œβ”€β”€ service/ # Logika biznesowa β”‚ β”‚ β”‚ β”œβ”€β”€ repository/ # DostΔ™p do BD β”‚ β”‚ β”‚ β”œβ”€β”€ model/ # Encje JPA β”‚ β”‚ β”‚ β”œβ”€β”€ dto/ # Data Transfer Objects β”‚ β”‚ β”‚ β”œβ”€β”€ mapper/ # MapStruct mapery β”‚ β”‚ β”‚ β”œβ”€β”€ exception/ # Global Exception Handler β”‚ β”‚ β”‚ └── validation/ # Custom validators β”‚ β”‚ └── resources/ β”‚ β”‚ β”œβ”€β”€ application.properties β”‚ β”‚ └── db/migration/ # Flyway migrations β”‚ └── test/ β”‚ └── java/pl/dmcs/userservice/ β”‚ β”œβ”€β”€ controller/ # Testy REST API β”‚ β”œβ”€β”€ dto/ # Testy walidacji DTO β”‚ β”œβ”€β”€ validation/ # Testy walidatorΓ³w β”‚ └── test/ # Test utilities (TestDataGenerator) └── pom.xml ``` --- ## πŸ—„οΈ Baza danych ### PostgreSQL - **Host**: localhost - **Port**: 5432 - **Database**: user_service_db - **User**: postgres - **Password**: password ### Migracje (Flyway) ``` V1__Initial_schema.sql β†’ Tworzenie tabel ``` --- ## πŸ” REST API ### User Endpoints | Metoda | Endpoint | Opis | |--------|----------|------| | `POST` | `/api/user` | Tworzenie uΕΌytkownika | | `GET` | `/api/user` | Pobranie wszystkich | | `GET` | `/api/user/{id}` | Pobranie po ID | | `PUT` | `/api/user/{id}` | PeΕ‚na aktualizacja | | `PATCH` | `/api/user/{id}` | CzΔ™Ε›ciowa aktualizacja | | `DELETE` | `/api/user/{id}` | UsuniΔ™cie | ### Transport Endpoints | Metoda | Endpoint | Opis | |--------|----------|------| | `POST` | `/api/transport/courier/{courierId}` | Dodaj transport | | `GET` | `/api/transport` | Wszystkie transporty | | `GET` | `/api/transport/{id}` | Po ID | | `PUT` | `/api/transport/{id}` | Aktualizacja | | `DELETE` | `/api/transport/{id}` | UsuniΔ™cie | --- ## βœ… Walidacja ### Phone Number - βœ… TYLKO format `+48XXXXXXXXX` (9 cyfr) ### User Types - `CUSTOMER` - Klient - `COURIER` - Kurier - `ADMIN` - Administrator ### Transport Types - `CAR`, `BIKE`, `VAN`, `TRUCK`, `SCOOTER` --- ## πŸ› οΈ Technologie - **Java 21** - **Spring Boot 4.0.3** - **PostgreSQL 17** - **Flyway** (migracje) - **MapStruct** (mapowanie) - **Lombok** (boilerplate) - **JUnit 5** (testy) - **MockMvc** (testy REST) - **Faker** (test data) ---