Note: In the dev profile, the repositories are cleared before startup and the initial data is loaded (see LoadInitialData.java).
Build application:
mvn clean installStart Postgres docker container:
docker run -d -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:17-alpineStart application (data source configured via application.yaml):
cd application
mvn spring-boot:run -Dspring-boot.run.profiles=devAll POS:
curl http://localhost:8080/api/posPOS by ID:
curl http://localhost:8080/api/pos/1 # add valid POS id herePOS by name:
curl http://localhost:8080/api/pos/filter?name=Cafeteria%20(Mensa) # add valid POS name herecurl --header "Content-Type: application/json" --request POST --data '{"name":"New Café","description":"Description","type":"CAFE","campus":"MAIN","street":"Teststraße","houseNumber":"99","postalCode":12345,"city":"Bayreuth"}' http://localhost:8080/api/posSee bean validation in action:
curl --header "Content-Type: application/json" --request POST --data '{"name":"","description":"","type":"CAFE","campus":"MAIN","street":"Teststraße","houseNumber":"99","postalCode":12345,"city":"Bayreuth"}' http://localhost:8080/api/posUpdate title and description:
curl --header "Content-Type: application/json" --request PUT --data '{"id":4,"name":"New Café (UBT)","description":"My description","type":"CAFE","campus":"MAIN","street":"Teststraße","houseNumber":"99","postalCode":12345,"city":"Bayreuth"}' http://localhost:8080/api/pos/4 # set correct POS id here and in the bodyAll users:
curl http://localhost:8080/api/usersUser by ID:
curl http://localhost:8080/api/users/1 # add valid user id hereUser by login name:
curl http://localhost:8080/api/users/filter?login_name=jane_doe # add valid user login name herecurl --header "Content-Type: application/json" --request POST --data '{"loginName":"new_login_name","emailAddress":"new.person@uni-bayreuth.de","firstName":"New","lastName":"Person"}' http://localhost:8080/api/usersSee bean validation in action:
curl --header "Content-Type: application/json" --request POST --data '{"loginName":"new_login_name!","emailAddress":"new.personATuni-bayreuth.de","firstName":"","lastName":""}' http://localhost:8080/api/usersUpdate login name and email address:
curl --header "Content-Type: application/json" --request PUT --data '{"id":1,"createdAt":"2025-05-27T17:11:49.272537","updatedAt":"2025-05-27T17:11:49.272541","loginName":"jane_doe_new","emailAddress":"jane.doe.new@uni-bayreuth.de","firstName":"Jane","lastName":"Doe"}' http://localhost:8080/api/users/1 # set correct user id here and in the bodyAll reviews:
curl http://localhost:8080/api/reviewsReview by ID:
curl http://localhost:8080/api/reviews/1 # add valid user id hereGet approved reviews for a POS:
curl http://localhost:8080/api/reviews/filter?pos_id=1 # add valid POS id herecurl --header "Content-Type: application/json" --request POST --data '{"posId":1,"authorId":1,"review":"Great place!"}' http://localhost:8080/api/reviews # use existing IDs for posId and authorIdUsers cannot approve their own reviews:
curl --header "Content-Type: application/json" --request PUT --data '{"id":1,"loginName":"jane_doe_new","emailAddress":"jane.doe.new@uni-bayreuth.de","firstName":"Jane","lastName":"Doe"}' http://localhost:8080/api/reviews/4 # use existing review ID and user DTOHowever, users can approve the same review twice (which is a limitation of the current implementation):
curl --header "Content-Type: application/json" --request PUT --data '{"id":2,"loginName":"maxmustermann","emailAddress":"max.mustermann@campus.de","firstName":"Max","lastName":"Mustermann"}' http://localhost:8080/api/reviews/4 # use existing review ID and user DTOcurl --header "Content-Type: application/json" --request PUT --data '{"id":2,"loginName":"maxmustermann","emailAddress":"max.mustermann@campus.de","firstName":"Max","lastName":"Mustermann"}' http://localhost:8080/api/reviews/4 # use existing review ID and user DTO