diff --git a/blocking-service/src/main/java/com/example/Word.java b/blocking-service/src/main/java/com/example/Word.java deleted file mode 100644 index 95403b8..0000000 --- a/blocking-service/src/main/java/com/example/Word.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.example; - -import lombok.Data; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Transient; - -@Entity -@Data -public class Word { - - @Id - private Long id; - - private String text; - - @Transient - private String computedData; - -} diff --git a/blocking-service/src/main/java/com/example/WordRepository.java b/blocking-service/src/main/java/com/example/WordRepository.java deleted file mode 100644 index 8263507..0000000 --- a/blocking-service/src/main/java/com/example/WordRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.example; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; - -import java.util.List; - -public interface WordRepository extends JpaRepository { - - @Query(value = """ - SELECT id, text - FROM word - ORDER BY RAND() - LIMIT :limit - """, - nativeQuery = true) - List findWords(int limit); - -} diff --git a/blocking-service/src/main/java/com/example/WordService.java b/blocking-service/src/main/java/com/example/WordService.java deleted file mode 100644 index f5fe69c..0000000 --- a/blocking-service/src/main/java/com/example/WordService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.example; - -import lombok.RequiredArgsConstructor; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.stream.Collectors; - -@RestController -@RequestMapping("/") -@RequiredArgsConstructor -public class WordService { - - private final WordRepository wordRepository; - - @RequestMapping("/words") - public List findWords(@RequestParam int limit) { - return wordRepository.findWords(limit).stream() - .map(this::fillData) - .collect(Collectors.toList()); - } - - private Word fillData(Word word) { - String encoded = new BCryptPasswordEncoder().encode(word.getText()); - word.setComputedData(encoded); - return word; - } - -} diff --git a/reactive-programming/src/main/java/com/example/Application.java b/reactive-programming/src/main/java/com/example/Application.java index 04159d1..582f8b9 100644 --- a/reactive-programming/src/main/java/com/example/Application.java +++ b/reactive-programming/src/main/java/com/example/Application.java @@ -1,18 +1,14 @@ package com.example; -import java.util.concurrent.TimeUnit; - public class Application { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { for (int u = 1; u <= 10; u++) { var user = "User " + u; - Service.getFlux() - .map(i -> user + " - " + i) - .subscribe(System.out::println); + Service.getStream() + .mapToObj(i -> user + " - " + i) + .forEach(System.out::println); } - - TimeUnit.SECONDS.sleep(5); } } diff --git a/reactive-programming/src/main/java/com/example/Service.java b/reactive-programming/src/main/java/com/example/Service.java index 900167d..5068c5c 100644 --- a/reactive-programming/src/main/java/com/example/Service.java +++ b/reactive-programming/src/main/java/com/example/Service.java @@ -1,8 +1,5 @@ package com.example; -import reactor.core.publisher.Flux; - -import java.time.Duration; import java.util.stream.IntStream; public class Service { @@ -17,9 +14,4 @@ public static IntStream getStream() { }); } - public static Flux getFlux() { - return Flux.interval(Duration.ofSeconds(1)) - .map(l -> (int) (Math.random() * 10)); - } - } diff --git a/reactive-service/src/main/java/com/example/Word.java b/reactive-service/src/main/java/com/example/Word.java deleted file mode 100644 index b26f43b..0000000 --- a/reactive-service/src/main/java/com/example/Word.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.example; - -import lombok.Data; -import org.springframework.data.annotation.Id; - -@Data -public class Word { - - @Id - private Long id; - - private String text; - - private String computedData; - -} diff --git a/reactive-service/src/main/java/com/example/WordRepository.java b/reactive-service/src/main/java/com/example/WordRepository.java deleted file mode 100644 index 1d9fd85..0000000 --- a/reactive-service/src/main/java/com/example/WordRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example; - -import org.springframework.data.r2dbc.repository.Query; -import org.springframework.data.r2dbc.repository.R2dbcRepository; -import reactor.core.publisher.Flux; - -public interface WordRepository extends R2dbcRepository { - - @Query(value = """ - SELECT id, text - FROM word - ORDER BY RAND() - LIMIT :limit - """) - Flux findWords(int limit); - -} diff --git a/reactive-service/src/main/java/com/example/WordService.java b/reactive-service/src/main/java/com/example/WordService.java deleted file mode 100644 index 002510f..0000000 --- a/reactive-service/src/main/java/com/example/WordService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.example; - -import lombok.RequiredArgsConstructor; -import org.springframework.http.MediaType; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Flux; - -@RestController -@RequestMapping("/") -@RequiredArgsConstructor -public class WordService { - - private final WordRepository wordRepository; - - @RequestMapping(value = "/words", produces = MediaType.TEXT_EVENT_STREAM_VALUE) - public Flux findWords(@RequestParam int limit) { - return wordRepository.findWords(limit) - .map(this::fillData); - } - - private Word fillData(Word word) { - String encoded = new BCryptPasswordEncoder().encode(word.getText()); - word.setComputedData(encoded); - return word; - } - -} diff --git a/reactive-service/src/main/resources/application.properties b/reactive-service/src/main/resources/application.properties index 2ac9cd7..61e10c2 100644 --- a/reactive-service/src/main/resources/application.properties +++ b/reactive-service/src/main/resources/application.properties @@ -1,14 +1,3 @@ server.port=9090 spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration -spring.r2dbc.url=r2dbc:mariadb://localhost:3306/wordle -spring.r2dbc.username=user -spring.r2dbc.password=password -spring.r2dbc.pool.max-size=10 -spring.r2dbc.pool.max-create-connection-time=10s - -# If you are using MariaDB SkySQL (https://mariadb.com/products/skysql), -# enable SSL and specify the path to the CA chain file that you can download -# from the SkySQL Portal (https://cloud.mariadb.com): -# -# spring.r2dbc.url=r2dbc:mariadb://demo-db0000xxxx.mdb000xxxx.db.skysql.net:5047/reactive-demo?sslMode=VERIFY_CA&serverSslCert=/path/to/skysql_chain.pem