luckperms_rs/models/
user.rs

1use std::collections::HashMap;
2use uuid::Uuid;
3use crate::models::node::Node;
4
5#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct UserIdentifier {
8    pub unique_id: Uuid,
9    pub username: String,
10}
11
12#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct User {
15    pub unique_id: Uuid,
16    pub username: String,
17    #[serde(default)]
18    pub parent_groups: Vec<String>,
19    pub nodes: Vec<Node>,
20
21}
22
23#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
24#[serde(rename_all = "camelCase")]
25pub struct Metadata {
26    pub meta: HashMap<String, String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    #[serde(default)]
29    pub prefix: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    #[serde(default)]
32    pub suffix: Option<String>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    #[serde(default)]
35    pub primary_group: Option<String>,
36}
37
38#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
39#[serde(rename_all = "camelCase")]
40pub struct UserSearchResult {
41    pub unique_id: Uuid,
42    pub results: Vec<Node>,
43}
44
45#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct UsernameUpdateRequest {
48    pub username: String,
49}
50
51#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
52#[serde(rename_all = "camelCase")]
53pub struct PermissionCheckResult {
54    pub result: bool,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    #[serde(default)]
57    pub node: Option<Node>,
58}
59
60#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
61#[serde(rename_all = "camelCase")]
62pub struct TrackMoveRequest {
63    pub track: String,
64}
65
66#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
67#[serde(rename_all = "camelCase")]
68pub struct TrackMoveResponse {
69    pub success: bool,
70    pub status: String,
71    pub group_from: String,
72    pub group_to: String,
73}