Working Service
This commit is contained in:
@ -0,0 +1,13 @@
|
||||
package at.dergeorg.todoservice;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class TodoServiceApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(TodoServiceApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
18
src/main/java/at/dergeorg/todoservice/WebConfig.java
Normal file
18
src/main/java/at/dergeorg/todoservice/WebConfig.java
Normal file
@ -0,0 +1,18 @@
|
||||
package at.dergeorg.todoservice;
|
||||
|
||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig {
|
||||
|
||||
@Bean
|
||||
public Jackson2ObjectMapperBuilderCustomizer customizeJson(){
|
||||
return builder -> {
|
||||
builder.indentOutput(true);
|
||||
builder.propertyNamingStrategy(PropertyNamingStrategy.LOWER_CASE);
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
package at.dergeorg.todoservice.controller;
|
||||
|
||||
import at.dergeorg.todoservice.data.TodoRepo;
|
||||
import at.dergeorg.todoservice.model.StateEnum;
|
||||
import at.dergeorg.todoservice.model.Todo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api")
|
||||
@CrossOrigin(value = "*")
|
||||
public class restController {
|
||||
|
||||
@Autowired
|
||||
private TodoRepo repo;
|
||||
|
||||
@GetMapping("/todo/{id}")
|
||||
public ResponseEntity<Todo> getTodo(@PathVariable("id") int id){
|
||||
Optional<Todo> ret = repo.findById(id);
|
||||
return ret.map(ResponseEntity::ok).orElseGet(() -> (ResponseEntity<Todo>) ResponseEntity.notFound());
|
||||
}
|
||||
|
||||
@PostMapping("/test")
|
||||
public void generateTestData(){
|
||||
repo.deleteAll();
|
||||
ArrayList<Todo> newTodos = new ArrayList<>();
|
||||
Todo nTodo = new Todo("Test 1", "Das ist ein Test", StateEnum.DOING);
|
||||
nTodo.setDateSting("1644415439976");
|
||||
newTodos.add(nTodo);
|
||||
nTodo = new Todo("Test 2", "Das ist ein Test 2", StateEnum.DOING);
|
||||
nTodo.setDateSting("1645570800000");
|
||||
newTodos.add(nTodo);
|
||||
nTodo = new Todo("Test 3", "Das ist ein Test 3", StateEnum.DONE);
|
||||
nTodo.setDateSting("1647903600000");
|
||||
newTodos.add(nTodo);
|
||||
nTodo = new Todo("Test 4", "Das ist ein Test 4", StateEnum.DONE);
|
||||
nTodo.setDateSting("1644102000000");
|
||||
newTodos.add(nTodo);
|
||||
nTodo = new Todo("Test 5", "Das ist ein Test 5", StateEnum.TODO);
|
||||
nTodo.setDateSting("1647730800000");
|
||||
newTodos.add(nTodo);
|
||||
nTodo = new Todo("Test 6", "Das ist ein Test 6", StateEnum.TODO);
|
||||
nTodo.setDateSting("1647298800000");
|
||||
newTodos.add(nTodo);
|
||||
repo.saveAll(newTodos);
|
||||
}
|
||||
|
||||
@GetMapping("/todos")
|
||||
public Iterable<Todo> getTodosFiltered(@RequestParam(required = false) Optional<String> state){
|
||||
if(state.isPresent()){
|
||||
StateEnum stateEnum = StateEnum.valueOf(state.get().toUpperCase());
|
||||
return repo.findByState(stateEnum);
|
||||
}else{
|
||||
return repo.findAll();
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/todo")
|
||||
public void addTodo(@RequestParam(value="name") String name, @RequestParam(value="description") String description, @RequestParam(value = "date") String date, @RequestParam(value = "state") String state){
|
||||
Todo newTodo = new Todo(name, description, StateEnum.valueOf(state.toUpperCase()));
|
||||
newTodo.setDateSting(date);
|
||||
repo.save(newTodo);
|
||||
}
|
||||
|
||||
@DeleteMapping("/todo/{id}")
|
||||
public void deleteTodo(@PathVariable("id") int id){
|
||||
repo.deleteById(id);
|
||||
}
|
||||
|
||||
@PutMapping("/todo/{id}")
|
||||
public void editTodo(@PathVariable("id") int id, @RequestParam(value="name") String name, @RequestParam(value="description") String description, @RequestParam(value = "date") String date, @RequestParam(value = "state") String state){
|
||||
Optional<Todo> optionalToEdit = repo.findById(id);
|
||||
if(optionalToEdit.isPresent()) {
|
||||
Todo toEdit = optionalToEdit.get();
|
||||
if (!name.isEmpty()) {
|
||||
toEdit.setName(name);
|
||||
}
|
||||
if (!description.isEmpty()) {
|
||||
toEdit.setDescription(description);
|
||||
}
|
||||
if (!date.isEmpty()) {
|
||||
toEdit.setDateSting(date);
|
||||
System.out.println(date);
|
||||
}
|
||||
if (!state.isEmpty()) {
|
||||
toEdit.setState(StateEnum.valueOf(state));
|
||||
}
|
||||
repo.save(toEdit);
|
||||
}
|
||||
}
|
||||
}
|
15
src/main/java/at/dergeorg/todoservice/data/TodoRepo.java
Normal file
15
src/main/java/at/dergeorg/todoservice/data/TodoRepo.java
Normal file
@ -0,0 +1,15 @@
|
||||
package at.dergeorg.todoservice.data;
|
||||
|
||||
import at.dergeorg.todoservice.model.StateEnum;
|
||||
import at.dergeorg.todoservice.model.Todo;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface TodoRepo extends CrudRepository<Todo, Integer> {
|
||||
|
||||
@Override
|
||||
Optional<Todo> findById(Integer integer);
|
||||
|
||||
Iterable<Todo> findByState(StateEnum stateEnum);
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package at.dergeorg.todoservice.model;
|
||||
|
||||
public enum StateEnum {
|
||||
TODO,
|
||||
DOING,
|
||||
DONE
|
||||
}
|
39
src/main/java/at/dergeorg/todoservice/model/Todo.java
Normal file
39
src/main/java/at/dergeorg/todoservice/model/Todo.java
Normal file
@ -0,0 +1,39 @@
|
||||
package at.dergeorg.todoservice.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.*;
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@RequiredArgsConstructor
|
||||
@Entity
|
||||
@NoArgsConstructor
|
||||
public class Todo {
|
||||
@NonNull
|
||||
@Column(name = "name")
|
||||
@JsonProperty("name")
|
||||
private String name;
|
||||
@NonNull
|
||||
@Column(name = "description")
|
||||
@JsonProperty("description")
|
||||
private String description;
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@JsonProperty("id")
|
||||
private int id;
|
||||
@Column(name = "date")
|
||||
@JsonProperty("date")
|
||||
private Date date;
|
||||
@NonNull
|
||||
@Column(name = "state")
|
||||
@JsonProperty("state")
|
||||
private StateEnum state;
|
||||
|
||||
public void setDateSting(String date){
|
||||
Date dDate = new Date();
|
||||
dDate.setTime(Long.parseLong(date));
|
||||
this.date = dDate;
|
||||
}
|
||||
}
|
16
src/main/resources/application.yaml
Normal file
16
src/main/resources/application.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
spring:
|
||||
application:
|
||||
name: todo-service
|
||||
profiles:
|
||||
active: default
|
||||
config:
|
||||
import: configserver:${CONFIGHTTP:http}://${CONFIGUSER:}${CONFIGURL:localhost:9997}/todo-config
|
||||
eureka:
|
||||
client:
|
||||
service-url:
|
||||
defaultZone: http://${HOSTNAME:localhost}:${EUREKAPORT:8761}/eureka
|
||||
instance:
|
||||
ip-address: ${HOSTNAME:localhost}
|
||||
hostname: ${HOSTNAME:localhost}
|
||||
instance-id: ${spring.application.name}:${random.value}
|
||||
prefer-ip-address: true
|
@ -0,0 +1,13 @@
|
||||
package at.dergeorg.todoservice;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
@SpringBootTest
|
||||
class TodoServiceApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user