Skip to content

Commit

Permalink
Added type controller
Browse files Browse the repository at this point in the history
  • Loading branch information
amir-shiati committed Mar 8, 2022
1 parent 4bc5cfd commit 91c7ef2
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/main/java/com/asrez/wheremoney/api/DataInitializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ private void addAdmin() {
}

private void addTypes() {
if (!typeRepository.findAll().isEmpty())
return;

List<Type> types = new ArrayList<>();
types.add(new Type().builder()
.name("EDUCATION")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Type> addType(@RequestBody @Valid Type type) {
return ResponseEntity.ok(typeService.addType(type));
}

@GetMapping
public List<Type> getAllTypes() {
return typeService.getAllTypes();
}

@DeleteMapping("{id}")
public ResponseEntity<Object> deleteType(@PathVariable("id") Long id) {
return ResponseEntity.ok(typeService.deleteType(id));
}
}
5 changes: 3 additions & 2 deletions src/main/java/com/asrez/wheremoney/api/entity/Type.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import lombok.NoArgsConstructor;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

@Data
@Builder
Expand All @@ -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;

}
21 changes: 21 additions & 0 deletions src/main/java/com/asrez/wheremoney/api/service/TypeService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -17,11 +20,29 @@ public TypeService(TypeRepository typeRepository) {
this.typeRepository = typeRepository;
}

public Type addType(Type type) {
return typeRepository.save(type);
}

public Type getType(Long id) {
Optional<Type> typeOptional = typeRepository.findById(id);
if (typeOptional.isEmpty())
throw new ApiRequestException("Type not found!", " TYPE_NOT_FOUND");

return typeOptional.get();
}

public List<Type> getAllTypes() {
return typeRepository.findAll();
}


public Map<Object, Object> deleteType(Long id) {
Type type = getType(id);
typeRepository.deleteById(type.getId());
Map<Object, Object> model = new HashMap<>();
model.put("id", id);
model.put("success", true);
return model;
}
}

0 comments on commit 91c7ef2

Please sign in to comment.