Skip to content

Commit

Permalink
chats word count api
Browse files Browse the repository at this point in the history
  • Loading branch information
rfresh2 committed Aug 21, 2024
1 parent bfa8354 commit 3831d9f
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 3 deletions.
33 changes: 33 additions & 0 deletions src/main/java/vc/controller/ChatsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public ChatsController(final DSLContext dsl, final PlayerLookup playerLookup) {

public record ChatsResponse(List<Chat> chats, int total, int pageCount) { }
public record Chat(OffsetDateTime time, String chat) {}
public record WordCount(int count) {}

@GetMapping("/chats")
@RateLimiter(name = "main")
Expand Down Expand Up @@ -98,4 +99,36 @@ public ResponseEntity<ChatsResponse> chats(
return ResponseEntity.ok(new ChatsResponse(chats, rowCount.intValue(), (int) Math.ceil(rowCount / (double) size)));
}
}

@GetMapping("/chats/word-count")
@RateLimiter(name = "main")
@Cacheable("chats-word-count")
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "Counts the number of times a word has appeared in chat",
content = {
@Content(
mediaType = "application/json",
schema = @Schema(implementation = WordCount.class)
)
}
),
@ApiResponse(
responseCode = "400",
description = "Bad request. The word must be at least 4 characters long.",
content = @Content
)
})
public ResponseEntity<WordCount> wordCount(String word) {
if (word == null || word.length() < 3) {
return ResponseEntity.badRequest().build();
}
var count = dsl.selectCount()
.from(CHATS)
.where(CHATS.CHAT.likeIgnoreCase("%" + word + "%"))
.fetchOneInto(Integer.class);
if (count == null) count = 0;
return ResponseEntity.ok(new WordCount(count));
}
}
16 changes: 13 additions & 3 deletions src/main/resources/META-INF/native-image/reflect-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3664,6 +3664,9 @@
{
"name":"java.lang.invoke.SerializedLambda"
},
{
"name":"java.lang.invoke.StringConcatFactory"
},
{
"name":"java.lang.invoke.TypeDescriptor$OfField",
"queryAllPublicMethods":true
Expand Down Expand Up @@ -3694,7 +3697,8 @@
},
{
"name":"java.lang.management.MemoryMXBean",
"queryAllPublicMethods":true
"queryAllPublicMethods":true,
"methods":[{"name":"getHeapMemoryUsage","parameterTypes":[] }]
},
{
"name":"java.lang.management.MemoryManagerMXBean",
Expand All @@ -3707,7 +3711,7 @@
{
"name":"java.lang.management.MemoryUsage",
"queryAllPublicMethods":true,
"methods":[{"name":"from","parameterTypes":["javax.management.openmbean.CompositeData"] }]
"methods":[{"name":"from","parameterTypes":["javax.management.openmbean.CompositeData"] }, {"name":"getCommitted","parameterTypes":[] }, {"name":"getInit","parameterTypes":[] }, {"name":"getMax","parameterTypes":[] }, {"name":"getUsed","parameterTypes":[] }]
},
{
"name":"java.lang.management.MonitorInfo",
Expand Down Expand Up @@ -13208,7 +13212,7 @@
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":["org.jooq.DSLContext","vc.util.PlayerLookup"] }, {"name":"chats","parameterTypes":["java.util.UUID","java.lang.String","java.lang.Integer","java.lang.Integer"] }]
"methods":[{"name":"<init>","parameterTypes":["org.jooq.DSLContext","vc.util.PlayerLookup"] }, {"name":"chats","parameterTypes":["java.util.UUID","java.lang.String","java.lang.Integer","java.lang.Integer"] }, {"name":"wordCount","parameterTypes":["java.lang.String"] }]
},
{
"name":"vc.controller.ChatsController$$SpringCGLIB$$0",
Expand All @@ -13229,6 +13233,12 @@
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":["java.util.List","int","int"] }, {"name":"chats","parameterTypes":[] }, {"name":"pageCount","parameterTypes":[] }, {"name":"total","parameterTypes":[] }]
},
{
"name":"vc.controller.ChatsController$WordCount",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"methods":[{"name":"count","parameterTypes":[] }]
},
{
"name":"vc.controller.ConnectionsController",
"allDeclaredFields":true,
Expand Down
12 changes: 12 additions & 0 deletions src/main/resources/META-INF/native-image/resource-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,8 @@
"pattern":"\\Qorg/springframework/boot/LazyInitializationExcludeFilter$$Lambda/0x0000018dd86cb460.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/LazyInitializationExcludeFilter$$Lambda/0x000001a0ac6a6230.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/LazyInitializationExcludeFilter$$Lambda/0x000001b1a86a6a78.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/LazyInitializationExcludeFilter$$Lambda/0x000002059c6df8b0.class\\E"
}, {
Expand Down Expand Up @@ -942,6 +944,8 @@
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration$$Lambda/0x0000018dd8654478.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration$$Lambda/0x000001a0ac61f320.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration$$Lambda/0x000001b1a861df78.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration$$Lambda/0x000002059c65c000.class\\E"
}, {
Expand Down Expand Up @@ -1208,6 +1212,8 @@
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration$$Lambda/0x0000018dd86c60a8.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration$$Lambda/0x000001a0ac69c000.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration$$Lambda/0x000001b1a8697c50.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/actuate/autoconfigure/web/servlet/ServletManagementContextAutoConfiguration$$Lambda/0x000002059c6d75f0.class\\E"
}, {
Expand Down Expand Up @@ -1462,6 +1468,8 @@
"pattern":"\\Qorg/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration$$Lambda/0x0000018dd86c4680.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration$$Lambda/0x000001a0ac6963d8.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration$$Lambda/0x000001b1a8696000.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvidersConfiguration$HikariPoolDataSourceMetadataProviderConfiguration$$Lambda/0x000002059c6cf8b8.class\\E"
}, {
Expand Down Expand Up @@ -1746,6 +1754,8 @@
"pattern":"\\Qorg/springframework/boot/devtools/autoconfigure/LocalDevToolsAutoConfiguration$LiveReloadServerEventListener.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/devtools/autoconfigure/LocalDevToolsAutoConfiguration$RestartConfiguration$$Lambda/0x0000018dd86e71f0.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/devtools/autoconfigure/LocalDevToolsAutoConfiguration$RestartConfiguration$$Lambda/0x000001b1a86af270.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/devtools/autoconfigure/LocalDevToolsAutoConfiguration$RestartConfiguration$$Lambda/0x000002059c6f3270.class\\E"
}, {
Expand Down Expand Up @@ -1806,6 +1816,8 @@
"pattern":"\\Qorg/springframework/boot/validation/beanvalidation/MethodValidationExcludeFilter$$Lambda/0x0000018dd864c1f8.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/validation/beanvalidation/MethodValidationExcludeFilter$$Lambda/0x000001a0ac616288.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/validation/beanvalidation/MethodValidationExcludeFilter$$Lambda/0x000001b1a86137f0.class\\E"
}, {
"pattern":"\\Qorg/springframework/boot/validation/beanvalidation/MethodValidationExcludeFilter$$Lambda/0x000002059c64f810.class\\E"
}, {
Expand Down

0 comments on commit 3831d9f

Please sign in to comment.