spacegate_config/service/redis/
delete.rs1use super::{Redis, RedisConfEvent, CONF_EVENT_CHANNEL, CONF_GATEWAY_KEY, CONF_HTTP_ROUTE_KEY, CONF_PLUGIN_KEY};
2use crate::{
3 service::{config_format::ConfigFormat, Delete},
4 BoxResult,
5};
6use redis::AsyncCommands;
7impl<F> Delete for Redis<F>
8where
9 F: ConfigFormat + Send + Sync,
10{
11 async fn delete_config_item_gateway(&self, gateway_name: &str) -> BoxResult<()> {
12 let mut conn = self.get_con().await?;
13 let _: () = conn.hdel(CONF_GATEWAY_KEY, gateway_name).await?;
14 let event = RedisConfEvent(
15 crate::service::ConfigType::Gateway { name: gateway_name.to_string() },
16 crate::service::ConfigEventType::Delete,
17 );
18 let _: () = conn.publish(CONF_EVENT_CHANNEL, event).await?;
19 Ok(())
20 }
21
22 async fn delete_config_item_route(&self, gateway_name: &str, route_name: &str) -> BoxResult<()> {
23 let _: () = self.get_con().await?.hdel(format!("{}{}", CONF_HTTP_ROUTE_KEY, gateway_name), route_name).await?;
24 let event = RedisConfEvent(
25 crate::service::ConfigType::Route {
26 gateway_name: gateway_name.to_string(),
27 name: route_name.to_string(),
28 },
29 crate::service::ConfigEventType::Delete,
30 );
31 let _: () = self.get_con().await?.publish(CONF_EVENT_CHANNEL, event).await?;
32 Ok(())
33 }
34
35 async fn delete_plugin(&self, id: &crate::model::PluginInstanceId) -> BoxResult<()> {
36 let _: () = self.get_con().await?.hdel(CONF_PLUGIN_KEY, id.to_string()).await?;
37 let event = RedisConfEvent(crate::service::ConfigType::Plugin { id: id.clone() }, crate::service::ConfigEventType::Delete);
38 let _: () = self.get_con().await?.publish(CONF_EVENT_CHANNEL, event).await?;
39 Ok(())
40 }
41}