summaryrefslogtreecommitdiff
path: root/crates/env/src/member.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-09-20 16:29:22 +0800
committer魏曹先生 <1992414357@qq.com>2025-09-20 16:29:22 +0800
commitd00835377141b1e6089a7222a8ecc6af2a3613de (patch)
tree93ed9ea3a7968add33c019d86e033b2327f2f6f4 /crates/env/src/member.rs
parent89a204dc2a52f26ca0352be0d7708b0aa5e0a6cc (diff)
Add env crates
Diffstat (limited to 'crates/env/src/member.rs')
-rw-r--r--crates/env/src/member.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/crates/env/src/member.rs b/crates/env/src/member.rs
new file mode 100644
index 0000000..34abe0d
--- /dev/null
+++ b/crates/env/src/member.rs
@@ -0,0 +1,55 @@
+use cfg_file::ConfigFile;
+use serde::{Deserialize, Serialize};
+use string_proc::camel_case;
+use uuid::Uuid;
+
+#[derive(Debug, Eq, Clone, ConfigFile, Serialize, Deserialize)]
+pub struct Member {
+ id: String,
+ uuid: Uuid,
+}
+
+impl Default for Member {
+ fn default() -> Self {
+ Self::new("default_user")
+ }
+}
+
+impl PartialEq for Member {
+ fn eq(&self, other: &Self) -> bool {
+ self.uuid == other.uuid
+ }
+}
+
+impl std::fmt::Display for Member {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{}", self.id)
+ }
+}
+
+impl std::convert::AsRef<str> for Member {
+ fn as_ref(&self) -> &str {
+ &self.id
+ }
+}
+
+impl Member {
+ /// Create member struct by id
+ pub fn new(new_id: impl Into<String>) -> Self {
+ let uuid = Uuid::new_v4();
+ Self {
+ id: camel_case!(new_id.into()),
+ uuid,
+ }
+ }
+
+ /// Get member id
+ pub fn id(&self) -> String {
+ self.id.clone()
+ }
+
+ /// Get member uuid
+ pub fn uuid(&self) -> Uuid {
+ self.uuid
+ }
+}