88import org .jetbrains .annotations .Nullable ;
99import pro .cloudnode .smp .smpcore .CachedProfile ;
1010import pro .cloudnode .smp .smpcore .Member ;
11- import pro .cloudnode .smp .smpcore .Nation ;
1211import pro .cloudnode .smp .smpcore .SMPCore ;
1312import pro .cloudnode .smp .smpcore .api .REST ;
1413
@@ -74,9 +73,18 @@ private static Predicate<Member> resolveFilter(final @Nullable String filter) {
7473 };
7574 }
7675
77- public void list (final @ NotNull Context ctx ) {
78- final @ Nullable String include = ctx .queryParam ("include" );
76+ private static void applyInclude (@ NotNull JsonObject json , @ NotNull Member member , @ Nullable String include ) {
77+ if (include == null )
78+ return ;
7979
80+ if ("nation" .equals (include )) {
81+ member .nation ()
82+ .map (Nations ::map )
83+ .ifPresentOrElse (nation -> json .add ("nation" , nation ), () -> json .add ("nation" , null ));
84+ }
85+ }
86+
87+ public void list (final @ NotNull Context ctx ) {
8088 final var limit = parseInt (ctx .queryParam ("limit" ));
8189 final var page = parseInt (ctx .queryParam ("page" ), 1 );
8290
@@ -86,22 +94,14 @@ public void list(final @NotNull Context ctx) {
8694
8795 final var filterPredicate = resolveFilter (ctx .queryParam ("filter" ));
8896
97+ final @ Nullable String include = ctx .queryParam ("include" );
98+
8999 for (final @ NotNull Member member : members ) {
90100 if (!filterPredicate .test (member ))
91101 continue ;
92102
93103 final @ NotNull JsonObject m = map (member );
94- if (include != null ) {
95- switch (include ) {
96- case "nation" -> {
97- final @ NotNull Optional <@ NotNull Nation > optionalNation = member .nation ();
98- if (optionalNation .isEmpty ())
99- m .add ("nation" , null );
100- else
101- m .add ("nation" , Nations .map (optionalNation .get ()));
102- }
103- }
104- }
104+ applyInclude (m , member , include );
105105 arr .add (m );
106106 }
107107 ctx .json (arr );
0 commit comments