- Spring Boot,
- skrypty migracyjne,
- kod SQL to stworzenia bazki.
- Java 17 (openjdk version "17.0.4.1")
- Maven (Apache Maven 3.9.5)
- Docker (Docker version 20.10.17)
Spakowanie backendu do pliku .jar
./mvnw clean package -DskipTestsUruchomienie kontenerów
docker-compose upUsunięcie niepotrzebnych kontenerów
docker-compose downPrzy nowych zmianach na backendzie (właśnych lub aktualizacja repozytorium) należy zbudować obraz od początku. Inaczej docker będzie cachować starę pliki i na ich podstawie budować projekt.
Można zmusić dockera do zbudowania nowego kontenera usuwając stary kontener w GUI lub użyc komendy:
docker-compose down && docker-compose build --no-cache- PostgreSQL
- Spring
- PgAdmin
- Endpoint:
/auth/login - Metoda HTTP:
POST - Payload:
-
{ "email": "user1@exampl.com", "password": "passwd" }
-
- Opis: Loguję użytkownika i zwraca klucz jwt.
- Response:
- 200
eyJhbGciOiJ...lInk87GfI
- 200
- Endpoint:
/auth/register - Metoda HTTP:
POST - Payload:
-
{ "email": "user1@exampl.com", "password": "passwd" }
-
- Opis: Rejestruje użytkownika i zwraca jego dane.
- Response:
- 200
{ "id": 2, "email": "test12@mail.com", "roles": "ROLE_USER", "points": 0 }
- 200
{"Authorization": "Bearer $jwtkey"}- Endpoint:
/auth/logout - Metoda HTTP:
POST - Opis: Wylogowuje użytkownika (przesyłany token staje się nieaktualny)
- Response:
- 200
Logout successful
- 200
- Endpoint:
/auth/user - Metoda HTTP:
GET - Opis: zwraca jego dane.
- Response:
- 200
{ "id": 2, "email": "test12@mail.com", "roles": "ROLE_USER", "points": 0 }
- 200
- Endpoint:
/events?sortBy={time/name} - Metoda HTTP:
GET - Opis: Pobiera wszystkie wydarzenia z opcjonalnym parametrem sortowania. Sortuje wydarzenia według daty lub alfabetycznie według nazwy.
- Response:
- 200
[ { "id": 1, "creatorId": 1, "eventName": "Event 1", "eventDateTime": "2023-12-28T21:55:56.815799", "location": "Place 1" }, { "id": 3, "creatorId": 1, "eventName": "New event", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "New place" }, { "id": 2, "creatorId": 2, "eventName": "xsssss", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "Place 2" } ]
- 200
- Endpoint:
/events/created/{creatorId} - Metoda HTTP:
GET - Opis: Pobiera listę wydarzeń utworzonych przez użytkownika o określonym
creatorId. - Response:
- 200
[ { "id": 2, "creatorId": 2, "eventName": "updated", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "Place 2" } ]
- 200
- Endpoint:
/events - Metoda HTTP:
POST - Opis: Tworzy nowe wydarzenie.
- Przykładowe body
{ "creatorId": 1, "eventName": "New event", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "New place" } - Response:
- 201
{ "id": 4, "creatorId": 1, "eventName": "New event", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "New place" } - 400 - w przypadku wystąpienia null w którymś polu, niepoprawnie zbudowanego JSONa
- 201
- Endpoint:
/events/{id} - Metoda HTTP:
PUT - Opis: Aktualizuje istniejące wydarzenie. Jeśli dane pole nie zostanie podane, zachowana zostanie oryginalna wartość.
- Przykładowe body
{ "eventName": "updated" } - Response:
- 200
{ "id": 2, "creatorId": 2, "eventName": "updated", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "Place 2" } - 404 - nie znaleziono wydarzenia z podanym id
- 403 - użytkownik nie jest właścicielem wydarzenia
- 200
- Endpoint:
/events/{id} - Metoda HTTP:
DELETE - Opis: Usuwa wydarzenie o określonym
id. Powiązane wpisy w tabeliattendance_entityzwiązane kluczem obcym również są usuwane. - Response:
- 204
- 404 - nie znaleziono wydarzenia z podanym id
- 403 - użytkownik nie jest właścicielem wydarzenia
- Endpoint:
/events/{id} - Metoda HTTP:
GET - Opis: Pobiera wydarzenie o określonym
id. - Response:
- 200
{ "id": 3, "creatorId": 1, "eventName": "New event", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "New place" } - 404 - nie znaleziono
- 200
- Endpoint:
/events/{id}/like - Metoda HTTP:
POST - Opis: Dodaje wydarzenie do ulubionych
- Response:
- 200 (info o wydarzeniu)
{ "id": 2, "creatorId": 2, "eventName": "Event 2", "eventDateTime": "2024-01-20T20:45:44.125845", "location": "Place 2" } - 404 - nie znaleziono
- 200 (info o wydarzeniu)
- Endpoint:
/events/{id}/like - Metoda HTTP:
DELETE - Opis: Usuwa wydarzenie z ulubionych
- Response:
- 204
- 404 - nie znaleziono
- Endpoint:
/events/liked - Metoda HTTP:
GET - Opis: Pobiera listę z wydarzeniami dodanymi do ulubionych
- Response:
- 200
[ { "id": 3, "creatorId": 1, "eventName": "updated", "eventDateTime": "2023-12-28T18:57:06.314245", "location": "New place" } ]
- 200
- Endpoint:
/events/{id}/checkIn - Metoda HTTP:
POST - Opis: Do wydarzenia określonego przez
iddodaje obecność. Zwraca istniejące lub nowe wartości encji (id użytkownika pobierane jest z tokenu do autoryzacji) - Response:
- 200
{ "id": 4, "user": { "id": 1, "email": "user1@exampl.com", "roles": "ROLE_USER", "points": 200 }, "event": { "id": 2, "creatorId": 2, "eventName": "Event 2", "eventDateTime": "2024-01-20T20:45:44.125845", "location": "Place 2" }, "checkInTime": "2024-01-20T21:14:24.079852995" } - 404 - nie znaleziono użytkownika lub wydarzenia
- 200
- Endpoint:
/attendance/history?userId={userId} - Metoda HTTP:
GET - Opis: Dla użytkownika o
idpodanym w query zostaje pobrana lista obecności posortowana według daty dodania. - Response:
- 200
[ { "id": 2, "creatorId": 2, "eventName": "Event 2", "eventDateTime": "2024-01-20T20:45:44.125845", "location": "Place 2" } ]
- 200
- Endpoint:
/rewards - Metoda HTTP:
GET - Opis: Zwraca listę dostępnych nagród.
- Response:
- 200
[ { "id": 1, "name": "reward1", "description": "desc", "value": 400 }, { "id": 2, "name": "reward2", "description": "desc2", "value": 900 } ]
- 200
- Endpoint:
/rewards/redeemed?userId={id} - Metoda HTTP:
GET - Opis: Zwraca listę nagród wypłaconych przez użytkownika.
- Response:
- 200
[ { "id": 1, "name": "reward1", "description": "desc", "value": 400 }, { "id": 1, "name": "reward1", "description": "desc", "value": 400 } ] - 404
Jeśli użytkownik nie istnieje.
- 200
- Endpoint:
/rewards/{id} - Metoda HTTP:
GET - Opis: Zwraca informację o nagrodzie.
- Response:
- 200
{ "id": 1, "name": "reward1", "description": "desc", "value": 400 } - 404
Jeśli nagroda nie istnieje.
- 200
- Endpoint:
/rewards/{id}/redeem - Metoda HTTP:
POST - Opis: Wykupuje nagrodę o
idpodanym w url (id użytkownika pobierane z tokenu). Odejmuje użytkownikowi punkty w ilości wartości nagrody. - Response:
- 200
{ "id": 1, "reward": { "id": 1, "name": "reward1", "description": "desc", "value": 400 }, "user": { "id": 1, "email": "user1@exampl.com", "roles": "ROLE_USER", "points": 600 } } - 404
Jeśli nagroda nie istnieje. - 409
Jeśli użytkownik nie ma wystarczającej ilości punktów.
- 200