diff --git a/src/main/java/group/goforward/battlbuilder/controllers/PlatformController.java b/src/main/java/group/goforward/battlbuilder/controllers/PlatformController.java new file mode 100644 index 0000000..68aa742 --- /dev/null +++ b/src/main/java/group/goforward/battlbuilder/controllers/PlatformController.java @@ -0,0 +1,55 @@ +package group.goforward.battlbuilder.controllers; + +import group.goforward.battlbuilder.model.Platform; +import group.goforward.battlbuilder.repos.PlatformRepository; +import group.goforward.battlbuilder.web.dto.admin.PlatformDto; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.time.OffsetDateTime; +import java.util.List; + +@RestController +@RequestMapping("/api/platforms") +@CrossOrigin +public class PlatformController { + + private final PlatformRepository platformRepository; + + public PlatformController(PlatformRepository platformRepository) { + this.platformRepository = platformRepository; + } + + @GetMapping + public List list() { + return platformRepository.findAllByOrderByLabelAsc() + .stream() + .map(p -> new PlatformDto( + p.getId(), + p.getKey(), + p.getLabel(), + p.getCreatedAt(), + p.getUpdatedAt() + )) + .toList(); + } + + @PostMapping("/add") + public ResponseEntity createPlatform(@RequestBody Platform platform) { + platform.setCreatedAt(OffsetDateTime.now()); + platform.setUpdatedAt(OffsetDateTime.now()); + Platform created = platformRepository.save(platform); + return ResponseEntity.status(HttpStatus.CREATED).body(created); + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deletePlatform(@PathVariable Integer id) { + return platformRepository.findById(id) + .map(platform -> { + platformRepository.deleteById(id); + return ResponseEntity.noContent().build(); + }) + .orElse(ResponseEntity.notFound().build()); + } +} diff --git a/src/main/java/group/goforward/battlbuilder/controllers/StateController.java b/src/main/java/group/goforward/battlbuilder/controllers/StateController.java index b7ddc31..fc9f4b5 100644 --- a/src/main/java/group/goforward/battlbuilder/controllers/StateController.java +++ b/src/main/java/group/goforward/battlbuilder/controllers/StateController.java @@ -2,7 +2,7 @@ package group.goforward.battlbuilder.controllers; import group.goforward.battlbuilder.model.State; import group.goforward.battlbuilder.repos.StateRepository; -import group.goforward.battlbuilder.services.StatesService; +import group.goforward.battlbuilder.services.admin.StatesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/group/goforward/battlbuilder/controllers/UserController.java b/src/main/java/group/goforward/battlbuilder/controllers/UserController.java index 8c657ec..9a5f88a 100644 --- a/src/main/java/group/goforward/battlbuilder/controllers/UserController.java +++ b/src/main/java/group/goforward/battlbuilder/controllers/UserController.java @@ -2,7 +2,7 @@ package group.goforward.battlbuilder.controllers; import group.goforward.battlbuilder.model.User; import group.goforward.battlbuilder.repos.UserRepository; -import group.goforward.battlbuilder.services.UsersService; +import group.goforward.battlbuilder.services.admin.UsersService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/group/goforward/battlbuilder/repos/PlatformRepository.java b/src/main/java/group/goforward/battlbuilder/repos/PlatformRepository.java new file mode 100644 index 0000000..55a70bd --- /dev/null +++ b/src/main/java/group/goforward/battlbuilder/repos/PlatformRepository.java @@ -0,0 +1,14 @@ +package group.goforward.battlbuilder.repos; + +import group.goforward.battlbuilder.model.Platform; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface PlatformRepository extends JpaRepository { + + Optional findByKey(String key); + + List findAllByOrderByLabelAsc(); +} diff --git a/src/main/java/group/goforward/battlbuilder/services/StatesService.java b/src/main/java/group/goforward/battlbuilder/services/admin/StatesService.java similarity index 83% rename from src/main/java/group/goforward/battlbuilder/services/StatesService.java rename to src/main/java/group/goforward/battlbuilder/services/admin/StatesService.java index 8d6241c..f13941c 100644 --- a/src/main/java/group/goforward/battlbuilder/services/StatesService.java +++ b/src/main/java/group/goforward/battlbuilder/services/admin/StatesService.java @@ -1,4 +1,4 @@ -package group.goforward.battlbuilder.services; +package group.goforward.battlbuilder.services.admin; import group.goforward.battlbuilder.model.State; diff --git a/src/main/java/group/goforward/battlbuilder/services/UsersService.java b/src/main/java/group/goforward/battlbuilder/services/admin/UsersService.java similarity index 83% rename from src/main/java/group/goforward/battlbuilder/services/UsersService.java rename to src/main/java/group/goforward/battlbuilder/services/admin/UsersService.java index 58c34a8..27fd092 100644 --- a/src/main/java/group/goforward/battlbuilder/services/UsersService.java +++ b/src/main/java/group/goforward/battlbuilder/services/admin/UsersService.java @@ -1,4 +1,4 @@ -package group.goforward.battlbuilder.services; +package group.goforward.battlbuilder.services.admin; import group.goforward.battlbuilder.model.User; diff --git a/src/main/java/group/goforward/battlbuilder/services/impl/StatesServiceImpl.java b/src/main/java/group/goforward/battlbuilder/services/admin/impl/StatesServiceImpl.java similarity index 85% rename from src/main/java/group/goforward/battlbuilder/services/impl/StatesServiceImpl.java rename to src/main/java/group/goforward/battlbuilder/services/admin/impl/StatesServiceImpl.java index 19c20d4..7b826a1 100644 --- a/src/main/java/group/goforward/battlbuilder/services/impl/StatesServiceImpl.java +++ b/src/main/java/group/goforward/battlbuilder/services/admin/impl/StatesServiceImpl.java @@ -1,9 +1,9 @@ -package group.goforward.battlbuilder.services.impl; +package group.goforward.battlbuilder.services.admin.impl; import group.goforward.battlbuilder.model.State; import group.goforward.battlbuilder.repos.StateRepository; -import group.goforward.battlbuilder.services.StatesService; +import group.goforward.battlbuilder.services.admin.StatesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/main/java/group/goforward/battlbuilder/services/impl/UsersServiceImpl.java b/src/main/java/group/goforward/battlbuilder/services/admin/impl/UsersServiceImpl.java similarity index 85% rename from src/main/java/group/goforward/battlbuilder/services/impl/UsersServiceImpl.java rename to src/main/java/group/goforward/battlbuilder/services/admin/impl/UsersServiceImpl.java index a99fa47..ec29803 100644 --- a/src/main/java/group/goforward/battlbuilder/services/impl/UsersServiceImpl.java +++ b/src/main/java/group/goforward/battlbuilder/services/admin/impl/UsersServiceImpl.java @@ -1,8 +1,8 @@ -package group.goforward.battlbuilder.services.impl; +package group.goforward.battlbuilder.services.admin.impl; import group.goforward.battlbuilder.model.User; import group.goforward.battlbuilder.repos.UserRepository; -import group.goforward.battlbuilder.services.UsersService; +import group.goforward.battlbuilder.services.admin.UsersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/main/java/group/goforward/battlbuilder/web/dto/admin/PlatformDto.java b/src/main/java/group/goforward/battlbuilder/web/dto/admin/PlatformDto.java new file mode 100644 index 0000000..19c0c3b --- /dev/null +++ b/src/main/java/group/goforward/battlbuilder/web/dto/admin/PlatformDto.java @@ -0,0 +1,11 @@ +package group.goforward.battlbuilder.web.dto.admin; + +import java.time.OffsetDateTime; + +public record PlatformDto( + Integer id, + String key, + String label, + OffsetDateTime createdAt, + OffsetDateTime updatedAt +) {}