1 package de.dlr.shepard.auth.users.io;
2
3 import de.dlr.shepard.auth.apikey.entities.ApiKey;
4 import de.dlr.shepard.auth.users.entities.User;
5 import de.dlr.shepard.common.subscription.entities.Subscription;
6 import java.util.UUID;
7 import lombok.Data;
8 import lombok.NoArgsConstructor;
9 import org.eclipse.microprofile.openapi.annotations.media.Schema;
10
11 @Data
12 @NoArgsConstructor
13 @Schema(name = "User")
14 public class UserIO {
15
16 @Schema(readOnly = true, required = true)
17 private String username;
18
19 private String firstName;
20
21 private String lastName;
22
23 private String email;
24
25 @Schema(readOnly = true, required = true)
26 private Long[] subscriptionIds;
27
28 @Schema(readOnly = true, required = true)
29 private UUID[] apiKeyIds;
30
31 public UserIO(User user) {
32 this.username = user.getUsername();
33 this.firstName = user.getFirstName();
34 this.lastName = user.getLastName();
35 this.email = user.getEmail();
36 this.subscriptionIds = user.getSubscriptions().stream().map(Subscription::getId).toArray(Long[]::new);
37 this.apiKeyIds = user.getApiKeys().stream().map(ApiKey::getUid).toArray(UUID[]::new);
38 }
39 }