change tags api, add tags requests, get list items

This commit is contained in:
mbecker20
2023-07-06 06:06:14 +00:00
parent 6ce6b55b68
commit 91f1de5d95
34 changed files with 280 additions and 96 deletions

View File

@@ -5,7 +5,7 @@ use partial_derive2::Partial;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
use super::{EnvironmentVar, PermissionsMap, SystemCommand, Version};
@@ -19,7 +19,7 @@ pub struct Build {
with = "hex_string_as_object_id"
)]
#[builder(setter(skip))]
pub id: String,
pub id: MongoId,
#[unique_index]
pub name: String,
@@ -44,6 +44,10 @@ pub struct Build {
#[builder(setter(skip))]
pub last_built_at: I64,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
pub config: BuildConfig,
}
@@ -108,10 +112,6 @@ pub struct BuildConfig {
#[serde(default)]
#[builder(default)]
pub use_buildx: bool,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
}
fn default_branch() -> String {
@@ -143,7 +143,6 @@ impl From<PartialBuildConfig> for BuildConfig {
build_args: value.build_args.unwrap_or_default(),
extra_args: value.extra_args.unwrap_or_default(),
use_buildx: value.use_buildx.unwrap_or_default(),
tags: value.tags.unwrap_or_default(),
}
}
}

View File

@@ -5,7 +5,7 @@ use partial_derive2::Partial;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
use super::PermissionsMap;
@@ -19,7 +19,7 @@ pub struct Builder {
with = "hex_string_as_object_id"
)]
#[builder(setter(skip))]
pub id: String,
pub id: MongoId,
#[unique_index]
pub name: String,

View File

@@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumString};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
use super::{EnvironmentVar, PermissionsMap, Version};
@@ -20,7 +20,7 @@ pub struct Deployment {
with = "hex_string_as_object_id"
)]
#[builder(setter(skip))]
pub id: String,
pub id: MongoId,
#[unique_index]
pub name: String,
@@ -41,6 +41,10 @@ pub struct Deployment {
#[builder(setter(skip))]
pub updated_at: I64,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
pub config: DeploymentConfig,
}
@@ -115,10 +119,6 @@ pub struct DeploymentConfig {
#[serde(default)]
#[builder(default)]
pub docker_account: String, // the username of the dockerhub account. empty if no account.
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
}
fn default_term_signal_labels() -> Vec<TerminationSignalLabel> {
@@ -156,7 +156,6 @@ impl From<PartialDeploymentConfig> for DeploymentConfig {
container_user: value.container_user.unwrap_or_default(),
extra_args: value.extra_args.unwrap_or_default(),
docker_account: value.docker_account.unwrap_or_default(),
tags: value.tags.unwrap_or_default(),
}
}
}

View File

@@ -5,7 +5,7 @@ use partial_derive2::Partial;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
use super::{PermissionsMap, SystemCommand};
@@ -19,7 +19,7 @@ pub struct Repo {
with = "hex_string_as_object_id"
)]
#[builder(setter(skip))]
pub id: String,
pub id: MongoId,
#[unique_index]
pub name: String,
@@ -40,6 +40,14 @@ pub struct Repo {
#[builder(setter(skip))]
pub updated_at: I64,
#[serde(default)]
#[builder(setter(skip))]
pub last_pulled_at: I64,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
pub config: RepoConfig,
}
@@ -68,10 +76,6 @@ pub struct RepoConfig {
#[serde(default)]
#[builder(default)]
pub on_pull: SystemCommand,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
}
fn default_branch() -> String {
@@ -87,7 +91,6 @@ impl From<PartialRepoConfig> for RepoConfig {
github_account: value.github_account.unwrap_or_default(),
on_clone: value.on_clone.unwrap_or_default(),
on_pull: value.on_pull.unwrap_or_default(),
tags: value.tags.unwrap_or_default(),
}
}
}

View File

@@ -5,7 +5,7 @@ use partial_derive2::Partial;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
use super::PermissionsMap;
@@ -23,7 +23,7 @@ pub struct Server {
with = "hex_string_as_object_id"
)]
#[builder(setter(skip))]
pub id: String,
pub id: MongoId,
#[unique_index]
pub name: String,
@@ -44,6 +44,10 @@ pub struct Server {
#[builder(setter(skip))]
pub updated_at: I64,
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
pub config: ServerConfig,
}
@@ -95,10 +99,6 @@ pub struct ServerConfig {
#[serde(default)]
#[builder(default)]
pub to_notify: Vec<String>, // slack users to notify
#[serde(default)]
#[builder(default)]
pub tags: Vec<String>,
}
fn default_enabled() -> bool {
@@ -147,7 +147,6 @@ impl From<PartialServerConfig> for ServerConfig {
mem_critical: value.mem_critical.unwrap_or(default_mem_critical()),
disk_critical: value.disk_critical.unwrap_or(default_disk_critical()),
to_notify: value.to_notify.unwrap_or_default(),
tags: value.tags.unwrap_or_default(),
}
}
}

View File

@@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumString};
use typeshare::typeshare;
use crate::{entities::Operation, monitor_timestamp, I64};
use crate::{entities::Operation, monitor_timestamp, I64, MongoId};
use super::Version;
@@ -18,7 +18,7 @@ pub struct Update {
skip_serializing_if = "String::is_empty",
with = "hex_string_as_object_id"
)]
pub id: String,
pub id: MongoId,
pub target: ResourceTarget,
pub operation: Operation,
pub logs: Vec<Log>,

View File

@@ -3,7 +3,7 @@ use mungos::MungosIndexed;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{i64_is_zero, I64};
use crate::{i64_is_zero, I64, MongoId};
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default, MungosIndexed)]
@@ -14,7 +14,7 @@ pub struct User {
skip_serializing_if = "String::is_empty",
with = "hex_string_as_object_id"
)]
pub id: String,
pub id: MongoId,
#[unique_index]
pub username: String,
@@ -43,6 +43,9 @@ pub struct User {
pub google_id: Option<String>,
#[serde(default)]
pub last_update_view: I64,
#[serde(default, skip_serializing_if = "i64_is_zero")]
pub created_at: I64,

View File

@@ -12,6 +12,8 @@ pub mod requests;
#[typeshare(serialized_as = "number")]
pub type I64 = i64;
#[typeshare(serialized_as = "{ $oid: string }")]
pub type MongoId = String;
#[typeshare(serialized_as = "any")]
pub type MongoDocument = mungos::mongodb::bson::Document;

View File

@@ -1,8 +1,9 @@
mod build;
pub use build::*;
mod deployment;
pub use deployment::*;
mod repo;
pub use repo::*;
mod server;
pub use build::*;
pub use deployment::*;
pub use repo::*;
pub use server::*;

View File

@@ -3,8 +3,11 @@ use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::{
entities::build::{Build, BuildActionState},
MongoDocument,
entities::{
build::{Build, BuildActionState},
Version,
},
MongoDocument, I64,
};
//
@@ -20,11 +23,21 @@ pub struct GetBuild {
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Vec<Build>)]
#[response(Vec<BuildListItem>)]
pub struct ListBuilds {
pub query: Option<MongoDocument>,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct BuildListItem {
pub id: String,
pub name: String,
pub last_built_at: I64,
pub version: Version,
pub tags: Vec<String>,
}
//
#[typeshare]

View File

@@ -23,11 +23,23 @@ pub struct GetDeployment {
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Vec<Deployment>)]
#[response(Vec<DeploymentListItem>)]
pub struct ListDeployments {
pub query: Option<MongoDocument>,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct DeploymentListItem {
pub id: String,
pub name: String,
pub tags: Vec<String>,
pub state: DockerContainerState,
pub status: Option<String>,
pub image: String,
pub version: String,
}
//
#[typeshare]

View File

@@ -1,17 +1,18 @@
use resolver_api::derive::Request;
use serde::{Serialize, Deserialize};
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
mod build;
pub use build::*;
mod builder;
pub use builder::*;
mod deployment;
pub use deployment::*;
mod repo;
pub use repo::*;
mod server;
pub use build::*;
pub use builder::*;
pub use deployment::*;
pub use repo::*;
pub use server::*;
use typeshare::typeshare;
//

View File

@@ -4,7 +4,7 @@ use typeshare::typeshare;
use crate::{
entities::repo::{Repo, RepoActionState},
MongoDocument,
MongoDocument, I64,
};
//
@@ -20,11 +20,20 @@ pub struct GetRepo {
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Vec<Repo>)]
#[response(Vec<RepoListItem>)]
pub struct ListRepos {
pub query: Option<MongoDocument>,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct RepoListItem {
pub id: String,
pub name: String,
pub last_pulled_at: I64,
pub tags: Vec<String>,
}
//
#[typeshare]

View File

@@ -31,11 +31,19 @@ pub struct GetServer {
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Vec<Server>)]
#[response(Vec<ServerListItem>)]
pub struct ListServers {
pub query: Option<MongoDocument>,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ServerListItem {
pub id: String,
pub name: String,
pub status: ServerStatus,
}
//
#[typeshare]

View File

@@ -1,14 +1,19 @@
mod build;
pub use build::*;
mod builder;
pub use builder::*;
mod deployment;
pub use deployment::*;
mod repo;
pub use repo::*;
mod server;
pub use server::*;
mod permissions;
pub use permissions::*;
mod repo;
mod secret;
pub use secret::*;
mod server;
mod tags;
mod user;
pub use build::*;
pub use builder::*;
pub use deployment::*;
pub use permissions::*;
pub use repo::*;
pub use secret::*;
pub use server::*;
pub use tags::*;
pub use user::*;

View File

@@ -0,0 +1,25 @@
use resolver_api::derive::Request;
use serde::{Serialize, Deserialize};
use typeshare::typeshare;
use crate::entities::update::ResourceTarget;
//
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(())]
pub struct AddTags {
pub target: ResourceTarget,
pub tags: Vec<String>,
}
//
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(())]
pub struct RemoveTags {
pub target: ResourceTarget,
pub tags: Vec<String>,
}

View File