lintel 0.2.0
Loading...
Searching...
No Matches
UserDto.h
Go to the documentation of this file.
1#ifndef LINTEL_USERDTO_H
2#define LINTEL_USERDTO_H
3
4#include <chrono>
5#include <memory>
6#include <optional>
7
12
13namespace lintel {
16{
17private:
19 std::string m_firstName;
21 std::string m_lastName;
23 std::string m_eMail;
25 std::string m_userName;
27 std::string m_id;
31 std::optional<std::string> m_password = std::nullopt;
33 std::chrono::sys_time<std::chrono::microseconds> m_createdTimestamp;
35 std::shared_ptr<GroupsDto> m_groups;
36
38 static struct Shapes
39 {
40 const char *const FIRST_NAME = "first_name";
41 const char *const LAST_NAME = "last_name";
42 const char *const EMAIL = "email";
43 const char *const USER_NAME = "user_name";
44 const char *const SEX = "sex";
45 const char *const CREATED_TIMESTAMP = "created_timestamp";
46 const char *const GROUPS = "groups";
47 const char *const ID = "id";
48 const char *const PASSWORD = "password";
49 } shape;
50
51public:
54 [[nodiscard]] const std::string &getFirstName() const;
55
58 [[nodiscard]] const std::string &getLastName() const;
59
62 [[nodiscard]] const std::string &getEMail() const;
63
66 [[nodiscard]] const std::string &getUserName() const;
67
70 [[nodiscard]] const std::string &getId() const;
71
75
78 [[nodiscard]] std::vector<GroupDto> getGroups() const;
79
82 [[nodiscard]] const std::chrono::sys_time<std::chrono::microseconds> &getCreatedTimestamp() const;
83
86 [[nodiscard]] const std::optional<std::string> &getPassword() const;
87
90 void setPassword(const std::string &password);
91
95 explicit UserDto(const User &user, std::string id = "");
96
98 UserDto() = default;
99
102 void serialize(rapidjson::Writer<rapidjson::StringBuffer> *writer) const override;
103
107 bool deserialize(const rapidjson::Value &obj) override;
108};
109
112{
113private:
115 std::vector<UserDto> m_users;
116
120 static std::vector<UserDto> init(const std::vector<User> &users);
121
122public:
125 explicit UsersDto(const std::vector<User> &users);
126
128 UsersDto() = default;
129
132 void serialize(rapidjson::Writer<rapidjson::StringBuffer> *writer) const override;
133
137 bool deserialize(const rapidjson::Value &obj) override;
138
141 [[nodiscard]] const std::vector<UserDto> &getUsers() const;
142};
143
146{
147private:
149 std::vector<UserDto> m_users;
151 bool m_hasMore = false;
153 std::optional<std::string> m_nextAfter;
154
156 static struct Shapes
157 {
158 const char *const ITEMS = "items";
159 const char *const HAS_MORE = "has_more";
160 const char *const NEXT_AFTER = "next_after";
161 } shape;
162
163public:
166 explicit UsersPageDto(const Page<User> &page);
167
169 UsersPageDto() = default;
170
173 void serialize(rapidjson::Writer<rapidjson::StringBuffer> *writer) const override;
174
178 bool deserialize(const rapidjson::Value &obj) override;
179
182 [[nodiscard]] const std::vector<UserDto> &getUsers() const;
183
185 [[nodiscard]] bool hasMore() const;
186
188 [[nodiscard]] const std::optional<std::string> &getNextAfter() const;
189};
190
191}// namespace lintel
192#endif// LINTEL_USERDTO_H
Definition JsonSerializable.h:17
Definition Page.h:15
Definition UserDto.h:16
const std::optional< std::string > & getPassword() const
bool deserialize(const rapidjson::Value &obj) override
const std::string & getId() const
const std::string & getLastName() const
void setPassword(const std::string &password)
UserDto()=default
const std::chrono::sys_time< std::chrono::microseconds > & getCreatedTimestamp() const
User::Sex getSex() const
UserDto(const User &user, std::string id="")
const std::string & getUserName() const
void serialize(rapidjson::Writer< rapidjson::StringBuffer > *writer) const override
std::vector< GroupDto > getGroups() const
const std::string & getEMail() const
const std::string & getFirstName() const
Definition User.h:23
Sex
Definition User.h:25
@ Male
Definition User.h:25
Definition UserDto.h:112
UsersDto(const std::vector< User > &users)
const std::vector< UserDto > & getUsers() const
UsersDto()=default
void serialize(rapidjson::Writer< rapidjson::StringBuffer > *writer) const override
bool deserialize(const rapidjson::Value &obj) override
Definition UserDto.h:146
UsersPageDto(const Page< User > &page)
bool hasMore() const
const std::vector< UserDto > & getUsers() const
bool deserialize(const rapidjson::Value &obj) override
const std::optional< std::string > & getNextAfter() const
void serialize(rapidjson::Writer< rapidjson::StringBuffer > *writer) const override
Definition BaseFeature.h:6
constexpr std::string_view type_name()
Definition TypeName.h:9