From 91c7ef27c80931b3c9dae6672869b2932a6fc128 Mon Sep 17 00:00:00 2001 From: amir shiati Date: Tue, 8 Mar 2022 16:17:31 +0330 Subject: [PATCH] Added type controller --- .../asrez/wheremoney/api/DataInitializer.java | 3 ++ .../wheremoney/api/config/SecurityConfig.java | 2 + .../api/controller/TypeController.java | 37 +++++++++++++++++++ .../com/asrez/wheremoney/api/entity/Type.java | 5 ++- .../wheremoney/api/service/TypeService.java | 21 +++++++++++ 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/asrez/wheremoney/api/controller/TypeController.java diff --git a/src/main/java/com/asrez/wheremoney/api/DataInitializer.java b/src/main/java/com/asrez/wheremoney/api/DataInitializer.java index 4b3c9d2..c84896c 100644 --- a/src/main/java/com/asrez/wheremoney/api/DataInitializer.java +++ b/src/main/java/com/asrez/wheremoney/api/DataInitializer.java @@ -51,6 +51,9 @@ private void addAdmin() { } private void addTypes() { + if (!typeRepository.findAll().isEmpty()) + return; + List types = new ArrayList<>(); types.add(new Type().builder() .name("EDUCATION") diff --git a/src/main/java/com/asrez/wheremoney/api/config/SecurityConfig.java b/src/main/java/com/asrez/wheremoney/api/config/SecurityConfig.java index 7486f77..ac5fe8f 100644 --- a/src/main/java/com/asrez/wheremoney/api/config/SecurityConfig.java +++ b/src/main/java/com/asrez/wheremoney/api/config/SecurityConfig.java @@ -48,6 +48,8 @@ SecurityFilterChain springWebFilterChain(HttpSecurity http, "/swagger-ui.html", "/webjars/**").permitAll() .antMatchers(HttpMethod.POST, "/api/v1/user").permitAll() + .antMatchers(HttpMethod.GET, "/api/v1/type").hasAnyRole("ADMIN", "USER") + .antMatchers("/api/v1/type").hasRole("ADMIN") .antMatchers("/api/v1/user").hasRole("ADMIN") .anyRequest().authenticated() ) diff --git a/src/main/java/com/asrez/wheremoney/api/controller/TypeController.java b/src/main/java/com/asrez/wheremoney/api/controller/TypeController.java new file mode 100644 index 0000000..e9f4d0b --- /dev/null +++ b/src/main/java/com/asrez/wheremoney/api/controller/TypeController.java @@ -0,0 +1,37 @@ +package com.asrez.wheremoney.api.controller; + +import com.asrez.wheremoney.api.entity.Type; +import com.asrez.wheremoney.api.service.TypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping("/api/v1/type") +public class TypeController { + + private final TypeService typeService; + + @Autowired + public TypeController(TypeService typeService) { + this.typeService = typeService; + } + + @PostMapping + public ResponseEntity addType(@RequestBody @Valid Type type) { + return ResponseEntity.ok(typeService.addType(type)); + } + + @GetMapping + public List getAllTypes() { + return typeService.getAllTypes(); + } + + @DeleteMapping("{id}") + public ResponseEntity deleteType(@PathVariable("id") Long id) { + return ResponseEntity.ok(typeService.deleteType(id)); + } +} diff --git a/src/main/java/com/asrez/wheremoney/api/entity/Type.java b/src/main/java/com/asrez/wheremoney/api/entity/Type.java index cb7a218..79df26a 100644 --- a/src/main/java/com/asrez/wheremoney/api/entity/Type.java +++ b/src/main/java/com/asrez/wheremoney/api/entity/Type.java @@ -7,6 +7,7 @@ import lombok.NoArgsConstructor; import javax.persistence.*; +import javax.validation.constraints.NotNull; @Data @Builder @@ -20,9 +21,9 @@ public class Type { @GeneratedValue(strategy = GenerationType.IDENTITY) @JsonProperty(access = JsonProperty.Access.READ_ONLY) private Long id; - private String name; + private @NotNull String name; @Column(name = "icon_name") @JsonProperty(value = "icon_name") - private String iconName; + private @NotNull String iconName; } diff --git a/src/main/java/com/asrez/wheremoney/api/service/TypeService.java b/src/main/java/com/asrez/wheremoney/api/service/TypeService.java index 32a70ff..4c5d62e 100644 --- a/src/main/java/com/asrez/wheremoney/api/service/TypeService.java +++ b/src/main/java/com/asrez/wheremoney/api/service/TypeService.java @@ -6,6 +6,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Optional; @Service @@ -17,6 +20,10 @@ public TypeService(TypeRepository typeRepository) { this.typeRepository = typeRepository; } + public Type addType(Type type) { + return typeRepository.save(type); + } + public Type getType(Long id) { Optional typeOptional = typeRepository.findById(id); if (typeOptional.isEmpty()) @@ -24,4 +31,18 @@ public Type getType(Long id) { return typeOptional.get(); } + + public List getAllTypes() { + return typeRepository.findAll(); + } + + + public Map deleteType(Long id) { + Type type = getType(id); + typeRepository.deleteById(type.getId()); + Map model = new HashMap<>(); + model.put("id", id); + model.put("success", true); + return model; + } }