From af2018f3439a25ef43d61a8887fdc5a1836eec1a Mon Sep 17 00:00:00 2001 From: Ihor Banadiga Date: Thu, 15 Feb 2018 09:32:07 +0200 Subject: [PATCH] mongodb added --- .../main/java/com/example/Application.java | 2 +- .../example/controller/UserController.java | 10 ++-- repository/pom.xml | 8 ++- .../src/main/java/com/example/model/User.java | 50 +++++++++++-------- .../example/repository/UserRepository.java | 32 ++---------- 5 files changed, 46 insertions(+), 56 deletions(-) diff --git a/controller/src/main/java/com/example/Application.java b/controller/src/main/java/com/example/Application.java index 7c100ac..e870950 100644 --- a/controller/src/main/java/com/example/Application.java +++ b/controller/src/main/java/com/example/Application.java @@ -39,7 +39,7 @@ RouterFunction routerFunction(UserController userController) { public static class ProgramaticBeanDefinitionInitializer implements ApplicationContextInitializer { public void initialize(GenericApplicationContext applicationContext) { - applicationContext.registerBean(UserRepository.class, UserRepository::new); + //applicationContext.registerBean(UserRepository.class, UserRepository::new); applicationContext.registerBean(UserController.class, () -> new UserController(applicationContext.getBean(UserRepository.class))); } diff --git a/controller/src/main/java/com/example/controller/UserController.java b/controller/src/main/java/com/example/controller/UserController.java index 54c409c..15e7030 100644 --- a/controller/src/main/java/com/example/controller/UserController.java +++ b/controller/src/main/java/com/example/controller/UserController.java @@ -32,25 +32,25 @@ public UserController(UserRepository userRepository) { public Mono createUser(ServerRequest request) { Mono user = request.bodyToMono(User.class); - return ServerResponse.ok().build(userRepository.add(user)); + return ServerResponse.ok().build(userRepository.saveAll(user)); } public Mono getUser(ServerRequest request) { - int userId = Integer.valueOf(request.pathVariable("id")); + String userId = request.pathVariable("id"); Mono notFound = ServerResponse.notFound().build(); - Mono userMono = userRepository.getUser(userId); + Mono userMono = userRepository.findById(userId); return userMono .flatMap(user -> ServerResponse.ok().contentType(APPLICATION_JSON).body(fromObject(user))) .switchIfEmpty(notFound); } public Mono getUsers(ServerRequest request) { - Flux userFlux = userRepository.getUsers(); + Flux userFlux = userRepository.findAll(); return ServerResponse.ok().contentType(APPLICATION_JSON).body(userFlux, User.class); } public Mono deleteUser(ServerRequest request) { Mono user = request.bodyToMono(User.class); - return ServerResponse.ok().build(userRepository.delete(user)); + return ServerResponse.ok().build(userRepository.deleteAll(user)); } } diff --git a/repository/pom.xml b/repository/pom.xml index 3356cbb..e95009d 100644 --- a/repository/pom.xml +++ b/repository/pom.xml @@ -12,4 +12,10 @@ repository - \ No newline at end of file + + + org.springframework.boot + spring-boot-starter-data-mongodb-reactive + + + diff --git a/repository/src/main/java/com/example/model/User.java b/repository/src/main/java/com/example/model/User.java index 7079031..40f9c13 100644 --- a/repository/src/main/java/com/example/model/User.java +++ b/repository/src/main/java/com/example/model/User.java @@ -1,33 +1,39 @@ package com.example.model; -import java.util.Random; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; +import java.util.UUID; + +@Document public class User { - private Integer id; - private String name; - public User() { - id = new Random().nextInt(Integer.MAX_VALUE); - } + @Id + private String id; + private String name; + + public User() { + id = UUID.randomUUID().toString(); + } - public User(String name) { - this(); - this.name = name; - } + public User(String name) { + this(); + this.name = name; + } - public Integer getId() { - return id; - } + public String getId() { + return id; + } - public String getName() { - return name; - } + public String getName() { + return name; + } - public void setName(String name) { - this.name = name; - } + public void setName(String name) { + this.name = name; + } - public String toString(){ - return "{ id: " + id + ", name: " + name + "}"; - } + public String toString() { + return "{ id: " + id + ", name: " + name + "}"; + } } diff --git a/repository/src/main/java/com/example/repository/UserRepository.java b/repository/src/main/java/com/example/repository/UserRepository.java index 3ef192e..13b4941 100644 --- a/repository/src/main/java/com/example/repository/UserRepository.java +++ b/repository/src/main/java/com/example/repository/UserRepository.java @@ -1,36 +1,14 @@ package com.example.repository; -import java.util.ArrayList; -import java.util.List; - -import com.example.model.User; -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -public class UserRepository { - private List users = new ArrayList<>(); +import com.example.model.User; - public Mono add(Mono userMono) { - return userMono.doOnNext(user -> { - System.out.println("Add user " + user.getName()); - users.add(user); - System.out.println("Users " + users); - }).thenEmpty(Mono.empty()); - } +import org.springframework.data.repository.reactive.ReactiveCrudRepository; - public Mono delete(Mono userMono) { - return userMono.doOnNext(user -> { - System.out.println("Remove user " + user.getName()); - users.remove(user); - System.out.println("Users " + users); - }).thenEmpty(Mono.empty()); - } +public interface UserRepository extends ReactiveCrudRepository { - public Flux getUsers() { - return Flux.fromIterable(users); - } + Mono deleteAll(Mono userMono); + Mono saveAll(Mono userMono); - public Mono getUser(Integer id) { - return Mono.justOrEmpty(users.stream().filter(user -> user.getId().equals(id)).findFirst().orElse(null)); - } }