mirror of
https://github.com/moghtech/komodo.git
synced 2026-09-21 00:01:12 +00:00
builders for the resource queries
This commit is contained in:
Generated
+21
@@ -1072,6 +1072,26 @@ dependencies = [
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_default_builder"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "901f910d000b4d497a96caa9b442804a75cd808db65fbed0760de83addacb739"
|
||||
dependencies = [
|
||||
"derive_default_builder_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_default_builder_derive"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b88a547f730777da7ca3bfa6055c6420a429fa7f149cd767da5827200923413"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_empty_traits"
|
||||
version = "0.1.0"
|
||||
@@ -2078,6 +2098,7 @@ dependencies = [
|
||||
"async_timing_util",
|
||||
"bollard",
|
||||
"derive_builder",
|
||||
"derive_default_builder",
|
||||
"derive_empty_traits",
|
||||
"derive_variants",
|
||||
"envy",
|
||||
|
||||
@@ -10,6 +10,7 @@ license = "GPL-3.0-or-later"
|
||||
|
||||
[workspace.dependencies]
|
||||
# local
|
||||
|
||||
monitor_macros = { path = "lib/macros" }
|
||||
monitor_client = { path = "client/rs" }
|
||||
monitor_periphery = { path = "bin/periphery" }
|
||||
@@ -19,6 +20,7 @@ logger = { path = "lib/logger" }
|
||||
# mogh
|
||||
run_command = { version = "0.0.6", features = ["async_tokio"] }
|
||||
slack = { version = "0.1.0", package = "slack_client_rs" }
|
||||
derive_default_builder = "0.1.6"
|
||||
derive_empty_traits = "0.1.0"
|
||||
merge_config_files = "0.1.3"
|
||||
termination_signal = "0.1.3"
|
||||
|
||||
@@ -14,6 +14,7 @@ resolver_api.workspace = true
|
||||
derive_empty_traits.workspace = true
|
||||
partial_derive2.workspace = true
|
||||
derive_variants.workspace = true
|
||||
derive_default_builder.workspace = true
|
||||
mungos.workspace = true
|
||||
mongo_indexed.workspace = true
|
||||
async_timing_util.workspace = true
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use derive_builder::Builder;
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use derive_variants::EnumVariants;
|
||||
use mungos::mongodb::bson::{doc, Document};
|
||||
use partial_derive2::Partial;
|
||||
@@ -139,7 +140,9 @@ pub struct SlackAlerterConfig {
|
||||
pub type AlerterQuery = ResourceQuery<AlerterQuerySpecifics>;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Default, DefaultBuilder,
|
||||
)]
|
||||
pub struct AlerterQuerySpecifics {
|
||||
pub types: Vec<AlerterConfigVariant>,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use derive_builder::Builder;
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use mungos::mongodb::bson::{doc, Document};
|
||||
use partial_derive2::Partial;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -122,7 +123,9 @@ pub struct BuildActionState {
|
||||
pub type BuildQuery = ResourceQuery<BuildQuerySpecifics>;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
#[derive(
|
||||
Debug, Clone, Default, Serialize, Deserialize, DefaultBuilder,
|
||||
)]
|
||||
pub struct BuildQuerySpecifics {
|
||||
#[serde(default)]
|
||||
pub builder_ids: Vec<String>,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use derive_builder::Builder;
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use derive_variants::EnumVariants;
|
||||
use mungos::mongodb::bson::{doc, Document};
|
||||
use partial_derive2::Partial;
|
||||
@@ -310,7 +311,9 @@ pub struct DeploymentActionState {
|
||||
pub type DeploymentQuery = ResourceQuery<DeploymentQuerySpecifics>;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Default, DefaultBuilder,
|
||||
)]
|
||||
pub struct DeploymentQuerySpecifics {
|
||||
#[serde(default)]
|
||||
pub server_ids: Vec<String>,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use derive_variants::EnumVariants;
|
||||
use mungos::mongodb::bson::{doc, Document};
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -72,7 +73,9 @@ pub struct ProcedureActionState {
|
||||
pub type ProcedureQuery = ResourceQuery<ProcedureQuerySpecifics>;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Default, DefaultBuilder,
|
||||
)]
|
||||
pub struct ProcedureQuerySpecifics {
|
||||
pub types: Vec<ProcedureConfigVariant>,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use derive_builder::Builder;
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use mungos::mongodb::bson::{doc, Document};
|
||||
use partial_derive2::Partial;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -71,7 +72,9 @@ pub struct RepoActionState {
|
||||
pub type RepoQuery = ResourceQuery<RepoQuerySpecifics>;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Default, DefaultBuilder,
|
||||
)]
|
||||
pub struct RepoQuerySpecifics {
|
||||
pub repos: Vec<String>,
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use derive_builder::Builder;
|
||||
use derive_default_builder::DefaultBuilder;
|
||||
use mungos::mongodb::bson::{
|
||||
doc, serde_helpers::hex_string_as_object_id, Document,
|
||||
};
|
||||
@@ -60,8 +61,10 @@ pub struct ResourceListItem<Info> {
|
||||
|
||||
/// Passing empty Vec is the same as not filtering by that field
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||
pub struct ResourceQuery<T> {
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Default, DefaultBuilder,
|
||||
)]
|
||||
pub struct ResourceQuery<T: Default> {
|
||||
#[serde(default)]
|
||||
pub names: Vec<String>,
|
||||
#[serde(default)]
|
||||
@@ -76,7 +79,7 @@ pub trait AddFilters {
|
||||
|
||||
impl AddFilters for () {}
|
||||
|
||||
impl<T: AddFilters> AddFilters for ResourceQuery<T> {
|
||||
impl<T: AddFilters + Default> AddFilters for ResourceQuery<T> {
|
||||
fn add_filters(&self, filters: &mut Document) {
|
||||
if !self.names.is_empty() {
|
||||
filters.insert("name", doc! { "$in": &self.names });
|
||||
@@ -87,41 +90,3 @@ impl<T: AddFilters> AddFilters for ResourceQuery<T> {
|
||||
self.specific.add_filters(filters);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ResourceQueryBuilder<T> {
|
||||
pub names: Option<Vec<String>>,
|
||||
pub tags: Option<Vec<String>>,
|
||||
pub specific: Option<T>,
|
||||
}
|
||||
|
||||
impl<T: Default> ResourceQueryBuilder<T> {
|
||||
pub fn build(self) -> ResourceQuery<T> {
|
||||
ResourceQuery {
|
||||
names: self.names.unwrap_or_default(),
|
||||
tags: self.tags.unwrap_or_default(),
|
||||
specific: self.specific.unwrap_or_default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn names(
|
||||
mut self,
|
||||
names: impl Into<Vec<String>>,
|
||||
) -> ResourceQueryBuilder<T> {
|
||||
self.names = Some(names.into());
|
||||
self
|
||||
}
|
||||
|
||||
pub fn tags(
|
||||
mut self,
|
||||
tags: impl Into<Vec<String>>,
|
||||
) -> ResourceQueryBuilder<T> {
|
||||
self.tags = Some(tags.into());
|
||||
self
|
||||
}
|
||||
|
||||
pub fn specific(mut self, specific: T) -> ResourceQueryBuilder<T> {
|
||||
self.specific = Some(specific);
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user