impl DomainExtention for FolderConfig and create corresponding types and
constructors
This commit is contained in:
parent
52cff0c9fa
commit
91be1f0acb
@ -1,4 +1,5 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use std::fmt::Display;
|
||||||
|
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -41,6 +42,57 @@ pub struct FolderAttributes {
|
|||||||
// pub management: ManagementProtocol,
|
// pub management: ManagementProtocol,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FolderAttributes {
|
||||||
|
pub fn set_site(&mut self, site: String) {
|
||||||
|
self.site = Some(site.to_string());
|
||||||
|
}
|
||||||
|
pub fn with_site(mut self, site: String) -> Self {
|
||||||
|
self.set_site(site);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_contactgroups(&mut self, contactgroups: HostContactGroups) {
|
||||||
|
self.contactgroups = Some(contactgroups);
|
||||||
|
}
|
||||||
|
pub fn with_contactgroups(mut self, contactgroups: HostContactGroups) -> Self {
|
||||||
|
self.set_contactgroups(contactgroups);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_parent(&mut self, parent: impl Display) {
|
||||||
|
self.parents.push(parent.to_string());
|
||||||
|
}
|
||||||
|
pub fn with_parent(mut self, parent: impl Display) -> Self {
|
||||||
|
self.add_parent(parent);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_snmp_community(&mut self, community: SnmpCommunity) {
|
||||||
|
self.snmp_community = Some(community);
|
||||||
|
}
|
||||||
|
pub fn with_snmp_community(mut self, community: SnmpCommunity) -> Self {
|
||||||
|
self.set_snmp_community(community);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_label(&mut self, labelkey: String, labelvalue: String) {
|
||||||
|
self.labels.insert(labelkey, labelvalue);
|
||||||
|
}
|
||||||
|
pub fn with_label(mut self, taggroup: String, tagvalue: String) -> Self {
|
||||||
|
self.add_label(taggroup, tagvalue);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_tag(&mut self, taggroup: impl Display, tagvalue: String) {
|
||||||
|
self.tags
|
||||||
|
.insert(format!("tag_{taggroup}"), tagvalue.to_string());
|
||||||
|
}
|
||||||
|
pub fn with_tag(mut self, taggroup: impl Display, tagvalue: String) -> Self {
|
||||||
|
self.add_tag(taggroup, tagvalue);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
pub struct MetaData {
|
pub struct MetaData {
|
||||||
pub created_at: DateTime<Utc>,
|
pub created_at: DateTime<Utc>,
|
||||||
@ -49,6 +101,94 @@ pub struct MetaData {
|
|||||||
pub created_by: Option<String>,
|
pub created_by: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
// impl DomainExtention for FolderConfig {
|
impl DomainExtention for FolderConfig {
|
||||||
|
const DOMAIN_TYPE: super::DomainType = super::DomainType::FolderConfig;
|
||||||
|
|
||||||
// }
|
type CreationRequest = FolderCreationRequest;
|
||||||
|
type CreationQuery = FolderCreationQuery;
|
||||||
|
type ReadQuery = FolderReadQuery;
|
||||||
|
type UpdateRequest = FolderUpdateRequest;
|
||||||
|
type DeleteQuery = FolderDeleteQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct FolderCreationRequest {
|
||||||
|
pub name: String,
|
||||||
|
pub title: String,
|
||||||
|
pub parent: String,
|
||||||
|
pub attributes: FolderAttributes
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FolderCreationRequest {
|
||||||
|
pub fn new(
|
||||||
|
name: String,
|
||||||
|
title: String,
|
||||||
|
parent: String,
|
||||||
|
attributes: FolderAttributes
|
||||||
|
) -> Self {
|
||||||
|
Self {
|
||||||
|
name,
|
||||||
|
title,
|
||||||
|
parent,
|
||||||
|
attributes,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct FolderCreationQuery;
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct FolderReadQuery;
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct FolderUpdateRequest {
|
||||||
|
pub title: String,
|
||||||
|
pub attributes: Option<FolderAttributes>,
|
||||||
|
pub update_attributes: Option<FolderAttributes>,
|
||||||
|
pub remove_attributes: Option<FolderAttributes>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FolderUpdateRequest {
|
||||||
|
pub fn replace(title: String, attributes: FolderAttributes) -> Self {
|
||||||
|
Self {
|
||||||
|
title,
|
||||||
|
attributes: Some(attributes),
|
||||||
|
update_attributes: None,
|
||||||
|
remove_attributes: None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn update(title: String, attributes: FolderAttributes) -> Self {
|
||||||
|
Self {
|
||||||
|
title,
|
||||||
|
attributes: None,
|
||||||
|
update_attributes: Some(attributes),
|
||||||
|
remove_attributes: None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn remove(title: String, attributes: FolderAttributes) -> Self {
|
||||||
|
Self {
|
||||||
|
title,
|
||||||
|
attributes: None,
|
||||||
|
update_attributes: None,
|
||||||
|
remove_attributes: Some(attributes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct FolderDeleteQuery {
|
||||||
|
pub delete_mode: FolderDeleteMode
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FolderDeleteQuery {
|
||||||
|
pub fn new(delete_mode: FolderDeleteMode) -> Self {
|
||||||
|
Self { delete_mode }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
#[serde(rename_all = "snake_case")]
|
||||||
|
pub enum FolderDeleteMode {
|
||||||
|
Recursive,
|
||||||
|
AbotyOnNonEmpty
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user