mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-05 06:01:32 +00:00
25 lines
534 B
Rust
25 lines
534 B
Rust
![]() |
use std::str::FromStr;
|
||
|
|
||
|
use anyhow::Result;
|
||
|
use uuid::Uuid;
|
||
|
|
||
|
use krata::v1::control::{GetZoneReply, GetZoneRequest};
|
||
|
|
||
|
use crate::db::zone::ZoneStore;
|
||
|
|
||
|
pub struct GetZoneRpc {
|
||
|
zones: ZoneStore,
|
||
|
}
|
||
|
|
||
|
impl GetZoneRpc {
|
||
|
pub fn new(zones: ZoneStore) -> Self {
|
||
|
Self { zones }
|
||
|
}
|
||
|
|
||
|
pub async fn process(self, request: GetZoneRequest) -> Result<GetZoneReply> {
|
||
|
let mut zones = self.zones.list().await?;
|
||
|
let zone = zones.remove(&Uuid::from_str(&request.zone_id)?);
|
||
|
Ok(GetZoneReply { zone })
|
||
|
}
|
||
|
}
|