diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt index fbf2a4f9a4..165a5e0e42 100644 --- a/backend/ee-repo-ref.txt +++ b/backend/ee-repo-ref.txt @@ -1 +1 @@ -0fede4b1086bc1456be9cc55b203228c979c5c5e +cb25312072c15c0e9cc375ebc824d41995a52898 diff --git a/backend/windmill-git-sync/src/lib.rs b/backend/windmill-git-sync/src/lib.rs index 3f8c521322..645e477a62 100644 --- a/backend/windmill-git-sync/src/lib.rs +++ b/backend/windmill-git-sync/src/lib.rs @@ -27,15 +27,15 @@ pub enum DeployedObject { ResourceType { path: String }, User { email: String }, Group { name: String }, - HttpTrigger { path: String }, - WebsocketTrigger { path: String }, - KafkaTrigger { path: String }, - NatsTrigger { path: String }, - PostgresTrigger { path: String }, - MqttTrigger { path: String }, - SqsTrigger { path: String }, - GcpTrigger { path: String }, - EmailTrigger { path: String }, + HttpTrigger { path: String, parent_path: Option }, + WebsocketTrigger { path: String, parent_path: Option }, + KafkaTrigger { path: String, parent_path: Option }, + NatsTrigger { path: String, parent_path: Option }, + PostgresTrigger { path: String, parent_path: Option }, + MqttTrigger { path: String, parent_path: Option }, + SqsTrigger { path: String, parent_path: Option }, + GcpTrigger { path: String, parent_path: Option }, + EmailTrigger { path: String, parent_path: Option }, Settings { setting_type: String }, Key { key_type: String }, } @@ -54,15 +54,15 @@ impl DeployedObject { DeployedObject::ResourceType { path, .. } => path.to_owned(), DeployedObject::User { email } => format!("users/{email}"), DeployedObject::Group { name } => format!("groups/{name}"), - DeployedObject::HttpTrigger { path } => path.to_owned(), - DeployedObject::WebsocketTrigger { path } => path.to_owned(), - DeployedObject::KafkaTrigger { path } => path.to_owned(), - DeployedObject::NatsTrigger { path } => path.to_owned(), - DeployedObject::PostgresTrigger { path } => path.to_owned(), - DeployedObject::MqttTrigger { path } => path.to_owned(), - DeployedObject::SqsTrigger { path } => path.to_owned(), - DeployedObject::GcpTrigger { path } => path.to_owned(), - DeployedObject::EmailTrigger { path } => path.to_owned(), + DeployedObject::HttpTrigger { path, .. } => path.to_owned(), + DeployedObject::WebsocketTrigger { path, .. } => path.to_owned(), + DeployedObject::KafkaTrigger { path, .. } => path.to_owned(), + DeployedObject::NatsTrigger { path, .. } => path.to_owned(), + DeployedObject::PostgresTrigger { path, .. } => path.to_owned(), + DeployedObject::MqttTrigger { path, .. } => path.to_owned(), + DeployedObject::SqsTrigger { path, .. } => path.to_owned(), + DeployedObject::GcpTrigger { path, .. } => path.to_owned(), + DeployedObject::EmailTrigger { path, .. } => path.to_owned(), DeployedObject::Settings { .. } => "settings.yaml".to_string(), DeployedObject::Key { .. } => "encryption_key.yaml".to_string(), } @@ -92,15 +92,15 @@ impl DeployedObject { DeployedObject::ResourceType { .. } => None, DeployedObject::User { .. } => None, DeployedObject::Group { .. } => None, - DeployedObject::HttpTrigger { .. } => None, - DeployedObject::WebsocketTrigger { .. } => None, - DeployedObject::KafkaTrigger { .. } => None, - DeployedObject::NatsTrigger { .. } => None, - DeployedObject::PostgresTrigger { .. } => None, - DeployedObject::MqttTrigger { .. } => None, - DeployedObject::SqsTrigger { .. } => None, - DeployedObject::GcpTrigger { .. } => None, - DeployedObject::EmailTrigger { .. } => None, + DeployedObject::HttpTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::WebsocketTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::KafkaTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::NatsTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::PostgresTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::MqttTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::SqsTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::GcpTrigger { parent_path, .. } => parent_path.to_owned(), + DeployedObject::EmailTrigger { parent_path, .. } => parent_path.to_owned(), DeployedObject::Settings { .. } => None, DeployedObject::Key { .. } => None, } diff --git a/backend/windmill-trigger-email/src/handler_oss.rs b/backend/windmill-trigger-email/src/handler_oss.rs index c2e450d052..9579bee274 100644 --- a/backend/windmill-trigger-email/src/handler_oss.rs +++ b/backend/windmill-trigger-email/src/handler_oss.rs @@ -35,8 +35,8 @@ impl TriggerCrud for EmailTrigger { const DEPLOYMENT_NAME: &'static str = ""; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::EmailTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::EmailTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-gcp/src/handler_oss.rs b/backend/windmill-trigger-gcp/src/handler_oss.rs index 0b9de33ce6..b259c87834 100644 --- a/backend/windmill-trigger-gcp/src/handler_oss.rs +++ b/backend/windmill-trigger-gcp/src/handler_oss.rs @@ -32,8 +32,8 @@ impl TriggerCrud for GcpTrigger { const DEPLOYMENT_NAME: &'static str = ""; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::GcpTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::GcpTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-http/src/handler.rs b/backend/windmill-trigger-http/src/handler.rs index 43d75f7368..578598e7c9 100644 --- a/backend/windmill-trigger-http/src/handler.rs +++ b/backend/windmill-trigger-http/src/handler.rs @@ -276,7 +276,7 @@ pub async fn create_many_http_triggers( &authed.username, &db, &w_id, - DeployedObject::HttpTrigger { path: http_trigger.base.path.clone() }, + DeployedObject::HttpTrigger { path: http_trigger.base.path.clone(), parent_path: None }, Some(format!("HTTP trigger '{}' created", http_trigger.base.path)), true, None, @@ -344,8 +344,8 @@ impl TriggerCrud for HttpTrigger { "raw_string", ]; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::HttpTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::HttpTrigger { path, parent_path } } fn additional_routes(&self) -> Router { diff --git a/backend/windmill-trigger-kafka/src/handler_oss.rs b/backend/windmill-trigger-kafka/src/handler_oss.rs index d85a6caba6..ace4b87d0a 100644 --- a/backend/windmill-trigger-kafka/src/handler_oss.rs +++ b/backend/windmill-trigger-kafka/src/handler_oss.rs @@ -35,8 +35,8 @@ impl TriggerCrud for KafkaTrigger { const DEPLOYMENT_NAME: &'static str = ""; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::KafkaTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::KafkaTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-mqtt/src/handler.rs b/backend/windmill-trigger-mqtt/src/handler.rs index 7b12a23c5f..a68179b3e8 100644 --- a/backend/windmill-trigger-mqtt/src/handler.rs +++ b/backend/windmill-trigger-mqtt/src/handler.rs @@ -39,8 +39,8 @@ impl TriggerCrud for MqttTrigger { ]; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::MqttTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::MqttTrigger { path, parent_path } } async fn validate_config( diff --git a/backend/windmill-trigger-nats/src/handler_oss.rs b/backend/windmill-trigger-nats/src/handler_oss.rs index 9c011041b5..b00d973621 100644 --- a/backend/windmill-trigger-nats/src/handler_oss.rs +++ b/backend/windmill-trigger-nats/src/handler_oss.rs @@ -35,8 +35,8 @@ impl TriggerCrud for NatsTrigger { const DEPLOYMENT_NAME: &'static str = ""; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::NatsTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::NatsTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-postgres/src/handler.rs b/backend/windmill-trigger-postgres/src/handler.rs index dc0057ffa4..f066533c34 100644 --- a/backend/windmill-trigger-postgres/src/handler.rs +++ b/backend/windmill-trigger-postgres/src/handler.rs @@ -58,8 +58,8 @@ impl TriggerCrud for PostgresTrigger { ]; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::PostgresTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::PostgresTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-sqs/src/handler_oss.rs b/backend/windmill-trigger-sqs/src/handler_oss.rs index 6340e95cd1..90396e9994 100644 --- a/backend/windmill-trigger-sqs/src/handler_oss.rs +++ b/backend/windmill-trigger-sqs/src/handler_oss.rs @@ -32,8 +32,8 @@ impl TriggerCrud for SqsTrigger { const DEPLOYMENT_NAME: &'static str = ""; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::SqsTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::SqsTrigger { path, parent_path } } async fn create_trigger( diff --git a/backend/windmill-trigger-websocket/src/handler.rs b/backend/windmill-trigger-websocket/src/handler.rs index c50b2dffec..22a31b047f 100644 --- a/backend/windmill-trigger-websocket/src/handler.rs +++ b/backend/windmill-trigger-websocket/src/handler.rs @@ -43,8 +43,8 @@ impl TriggerCrud for WebsocketTrigger { ]; const IS_ALLOWED_ON_CLOUD: bool = false; - fn get_deployed_object(path: String) -> DeployedObject { - DeployedObject::WebsocketTrigger { path } + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject { + DeployedObject::WebsocketTrigger { path, parent_path } } async fn validate_config( diff --git a/backend/windmill-trigger/src/handler.rs b/backend/windmill-trigger/src/handler.rs index be9e92228d..7c6d06991a 100644 --- a/backend/windmill-trigger/src/handler.rs +++ b/backend/windmill-trigger/src/handler.rs @@ -61,7 +61,7 @@ pub trait TriggerCrud: Send + Sync + 'static { const ADDITIONAL_SELECT_FIELDS: &[&'static str] = &[]; const IS_ALLOWED_ON_CLOUD: bool; - fn get_deployed_object(path: String) -> DeployedObject; + fn get_deployed_object(path: String, parent_path: Option) -> DeployedObject; async fn validate_new( &self, @@ -437,7 +437,7 @@ async fn create_trigger( &authed.username, &db, &workspace_id, - T::get_deployed_object(new_path.clone()), + T::get_deployed_object(new_path.clone(), None), Some(format!("{} '{}' created", T::DEPLOYMENT_NAME, new_path)), true, None, @@ -526,12 +526,18 @@ async fn update_trigger( ) .await?; + let parent_path = if path != new_path { + Some(path.to_string()) + } else { + None + }; + handle_deployment_metadata( &authed.email, &authed.username, &db, &workspace_id, - T::get_deployed_object(new_path.clone()), + T::get_deployed_object(new_path.clone(), parent_path), Some(format!("{} '{}' updated", T::DEPLOYMENT_NAME, new_path)), true, None, @@ -632,7 +638,7 @@ async fn set_trigger_mode( &authed.username, &db, &workspace_id, - T::get_deployed_object(path.to_owned()), + T::get_deployed_object(path.to_owned(), None), Some(format!("{} trigger '{}' updated", T::DEPLOYMENT_NAME, path)), true, None, diff --git a/frontend/src/lib/hubPaths.json b/frontend/src/lib/hubPaths.json index 72b842891a..8cf984a8aa 100644 --- a/frontend/src/lib/hubPaths.json +++ b/frontend/src/lib/hubPaths.json @@ -20,7 +20,8 @@ "gitSync_18": "hub/28078/sync-script-to-git-repo-windmill", "gitSync_19": "hub/28081/sync-script-to-git-repo-windmill", "gitSync_20": "hub/28102/sync-script-to-git-repo-windmill", - "gitSync": "hub/28131/sync-script-to-git-repo-windmill", + "gitSync_21": "hub/28131/sync-script-to-git-repo-windmill", + "gitSync": "hub/28159/sync-script-to-git-repo-windmill", "gitSyncTest": "hub/19799/git-repo-test-read-write-windmill", "gitInitRepo_0": "hub/28134/git-sync%3A-init-repository-windmill", "gitInitRepo": "hub/28158/git-sync%3A-init-repository-windmill",