create the Group type to group all the resources (including groups for nesting

This commit is contained in:
mbecker20
2022-12-25 06:20:22 +00:00
parent d2a3a6cddf
commit 46dc663385
3 changed files with 61 additions and 1 deletions

View File

@@ -6,6 +6,9 @@ use typeshare::typeshare;
use crate::{diff::*, Command, EnvironmentVar, PermissionsMap};
#[typeshare]
pub const PERIPHERY_BUILDER_BUSY: &str = "BUILDER_BUSY";
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default, Diff, Builder)]
#[diff(attr(#[derive(Debug, Serialize)]))]

53
lib/types/src/group.rs Normal file
View File

@@ -0,0 +1,53 @@
use bson::serde_helpers::hex_string_as_object_id;
use derive_builder::Builder;
use diff::Diff;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{diff::*, PermissionsMap};
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default, Diff, Builder)]
#[diff(attr(#[derive(Debug, Serialize)]))]
pub struct Group {
#[serde(
default,
rename = "_id",
skip_serializing_if = "String::is_empty",
with = "hex_string_as_object_id"
)]
#[diff(attr(#[serde(skip_serializing_if = "Option::is_none")]))]
#[builder(setter(skip))]
pub id: String,
#[diff(attr(#[serde(skip_serializing_if = "Option::is_none")]))]
pub name: String,
#[diff(attr(#[serde(skip_serializing_if = "hashmap_diff_no_change")]))]
#[builder(setter(skip))]
pub permissions: PermissionsMap,
#[diff(attr(#[serde(skip_serializing_if = "vec_diff_no_change")]))]
pub builds: Vec<String>,
#[diff(attr(#[serde(skip_serializing_if = "vec_diff_no_change")]))]
pub deployments: Vec<String>,
#[diff(attr(#[serde(skip_serializing_if = "vec_diff_no_change")]))]
pub servers: Vec<String>,
#[diff(attr(#[serde(skip_serializing_if = "vec_diff_no_change")]))]
pub procedures: Vec<String>,
#[diff(attr(#[serde(skip_serializing_if = "vec_diff_no_change")]))]
pub groups: Vec<String>,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
#[builder(setter(skip))]
pub created_at: String,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
#[builder(setter(skip))]
pub updated_at: String,
}

View File

@@ -2,7 +2,9 @@ use std::collections::HashMap;
use ::diff::Diff;
use anyhow::Context;
use bson::serde_helpers::hex_string_as_object_id;
use chrono::{DateTime, SecondsFormat, Utc};
use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumString};
use typeshare::typeshare;
@@ -15,6 +17,7 @@ mod build;
mod config;
mod deployment;
mod diff;
mod group;
mod procedure;
mod server;
mod update;
@@ -23,12 +26,13 @@ mod user;
pub use build::*;
pub use config::*;
pub use deployment::*;
pub use group::*;
pub use procedure::*;
pub use server::*;
pub use update::*;
pub use user::*;
pub const PERIPHERY_BUILDER_BUSY: &str = "builder is busy";
use crate::diff::*;
#[typeshare]
pub type PermissionsMap = HashMap<String, PermissionLevel>;