Skip to content

Commit c346801

Browse files
committed
Arguments7Validator.unwrap to group 'At' and 'By' fields by auditInfoValidator
1 parent 8f745d5 commit c346801

File tree

2 files changed

+28
-25
lines changed

2 files changed

+28
-25
lines changed

todo-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
<dependency>
5050
<groupId>am.ik.yavi</groupId>
5151
<artifactId>yavi</artifactId>
52-
<version>0.15.0</version>
52+
<version>0.16.0</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>io.micrometer</groupId>

todo-api/src/main/java/lol/maki/dev/todo/Todo.java

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package lol.maki.dev.todo;
22

3+
import am.ik.yavi.arguments.Arguments;
4+
import am.ik.yavi.arguments.Arguments2;
5+
import am.ik.yavi.arguments.Arguments2Validator;
6+
import am.ik.yavi.arguments.Arguments7;
37
import am.ik.yavi.arguments.Arguments7Validator;
48
import am.ik.yavi.arguments.BooleanValidator;
5-
import am.ik.yavi.arguments.InstantValidator;
69
import am.ik.yavi.arguments.StringValidator;
710
import am.ik.yavi.builder.BooleanValidatorBuilder;
8-
import am.ik.yavi.builder.InstantValidatorBuilder;
911
import am.ik.yavi.builder.StringValidatorBuilder;
12+
import am.ik.yavi.core.Constraint;
13+
import am.ik.yavi.validator.Yavi;
1014
import com.fasterxml.jackson.annotation.JsonInclude;
1115
import java.time.Instant;
1216
import java.util.function.Function;
@@ -16,12 +20,6 @@
1620
public record Todo(String todoId, String todoTitle, boolean finished, Instant createdAt, String createdBy,
1721
Instant updatedAt, String updatedBy) {
1822

19-
private static Function<String, InstantValidator<Instant>> instantValidator = (
20-
name) -> InstantValidatorBuilder.of(name, c -> c.notNull()).build();
21-
22-
private static Function<String, StringValidator<String>> usernameValidator = (
23-
name) -> StringValidatorBuilder.of(name, c -> c.notBlank().lessThanOrEqual(255)).build();
24-
2523
public static StringValidator<String> todoIdValidator = StringValidatorBuilder
2624
.of("todoId", c -> c.notBlank().lessThanOrEqual(255))
2725
.build();
@@ -33,22 +31,27 @@ public record Todo(String todoId, String todoTitle, boolean finished, Instant cr
3331
public static BooleanValidator<Boolean> finishedValidator = BooleanValidatorBuilder.of("finished", c -> c.notNull())
3432
.build();
3533

36-
public static InstantValidator<Instant> createdAtValidator = instantValidator.apply("createdAt");
37-
38-
public static InstantValidator<Instant> updatedAtValidator = instantValidator.apply("updatedAt");
39-
40-
public static StringValidator<String> createdByValidator = usernameValidator.apply("createdBy");
41-
42-
public static StringValidator<String> updatedByValidator = usernameValidator.apply("updatedBy");
43-
44-
public static Arguments7Validator<String, String, Boolean, Instant, String, Instant, String, Todo> validator = todoIdValidator
45-
.split(todoTitleValidator)
46-
.split(finishedValidator)
47-
.split(createdAtValidator)
48-
.split(createdByValidator)
49-
.split(updatedAtValidator)
50-
.split(updatedByValidator)
51-
.apply(Todo::new);
34+
private static final Function<String, Arguments2Validator<Instant, String, Arguments2<Instant, String>>> auditInfoValidator = name -> Yavi
35+
.arguments()
36+
._instant(name + "At", Constraint::notNull)
37+
._string(name + "By", c -> c.notBlank().lessThanOrEqual(255))
38+
.apply(Arguments::of);
39+
40+
public static final Arguments2Validator<Instant, String, Arguments2<Instant, String>> createdValidator = auditInfoValidator
41+
.apply("created");
42+
43+
public static final Arguments2Validator<Instant, String, Arguments2<Instant, String>> updatedValidator = auditInfoValidator
44+
.apply("updated");
45+
46+
public static Arguments7Validator<String, String, Boolean, Instant, String, Instant, String, Todo> validator = Arguments7Validator
47+
.unwrap(todoTitleValidator.split(todoTitleValidator)
48+
.split(finishedValidator)
49+
.apply(Arguments::of)
50+
.<Arguments7<String, String, Boolean, Instant, String, Instant, String>>compose(Arguments7::first3)
51+
.combine(createdValidator.compose(args -> Arguments.of(args.arg4(), args.arg5())))
52+
.combine(updatedValidator.compose(args -> Arguments.of(args.arg6(), args.arg7())))
53+
.apply((a1, a2, a3) -> new Todo(a1.arg1(), a1.arg2(), a1.arg3(), a2.arg1(), a2.arg2(), a3.arg1(),
54+
a3.arg2())));
5255

5356
@Builder(className = "TodoBuilder", factoryMethod = "todo", toBuilder = "from", packageName = "lol.maki.dev.todo")
5457
public static Todo create(String todoId, String todoTitle, boolean finished, Instant createdAt, String createdBy,

0 commit comments

Comments
 (0)