111 lines
2.4 KiB
Rust
111 lines
2.4 KiB
Rust
use j_db::database::Database;
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::HashSet;
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub struct Service {
|
|
pub name: String,
|
|
|
|
id: Option<u64>,
|
|
}
|
|
|
|
impl Service {
|
|
pub fn new(name: &str) -> Self {
|
|
Self {
|
|
name: name.to_string(),
|
|
id: None,
|
|
}
|
|
}
|
|
|
|
pub fn add_service(db: &Database, name: &str) -> Result<Self, j_db::error::JDbError> {
|
|
let service = Self::new(name);
|
|
db.insert(service)
|
|
}
|
|
|
|
pub fn find_service_by_name(
|
|
db: &Database,
|
|
name: &str,
|
|
) -> Result<Option<Self>, j_db::error::JDbError> {
|
|
Ok(db
|
|
.filter(|_, service: &Service| service.name.contains(name))?
|
|
.next()
|
|
.clone())
|
|
}
|
|
}
|
|
|
|
impl j_db::model::JdbModel for Service {
|
|
fn id(&self) -> Option<u64> {
|
|
self.id
|
|
}
|
|
|
|
fn set_id(&mut self, id: u64) {
|
|
self.id = Some(id)
|
|
}
|
|
|
|
fn tree() -> String {
|
|
"Service".to_string()
|
|
}
|
|
|
|
fn check_unique(&self, other: &Self) -> bool {
|
|
!self.name.eq_ignore_ascii_case(&other.name)
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
|
pub struct ServiceGroup {
|
|
pub name: String,
|
|
pub description: String,
|
|
pub services: HashSet<u64>,
|
|
|
|
id: Option<u64>,
|
|
}
|
|
|
|
impl ServiceGroup {
|
|
pub fn new(name: &str, description: &str) -> Self {
|
|
Self {
|
|
name: name.to_string(),
|
|
description: description.to_string(),
|
|
services: HashSet::new(),
|
|
id: None,
|
|
}
|
|
}
|
|
|
|
pub fn add_group(
|
|
db: &Database,
|
|
name: &str,
|
|
description: &str,
|
|
) -> Result<Self, j_db::error::JDbError> {
|
|
let service_group = Self::new(name, description);
|
|
|
|
db.insert(service_group)
|
|
}
|
|
|
|
pub fn find_group_by_name(
|
|
db: &Database,
|
|
name: &str,
|
|
) -> Result<Option<Self>, j_db::error::JDbError> {
|
|
Ok(db
|
|
.filter(|_, group: &ServiceGroup| group.name.eq_ignore_ascii_case(name))?
|
|
.next()
|
|
.clone())
|
|
}
|
|
}
|
|
|
|
impl j_db::model::JdbModel for ServiceGroup {
|
|
fn id(&self) -> Option<u64> {
|
|
self.id
|
|
}
|
|
|
|
fn set_id(&mut self, id: u64) {
|
|
self.id = Some(id)
|
|
}
|
|
|
|
fn tree() -> String {
|
|
"ServiceGroup".to_string()
|
|
}
|
|
|
|
fn check_unique(&self, other: &Self) -> bool {
|
|
!self.name.eq_ignore_ascii_case(&other.name)
|
|
}
|
|
}
|