MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / update

Method update

chirpstack/src/api/tenant.rs:121–170  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::UpdateTenantRequest>,
    )

Source from the content-addressed store, hash-verified

119 }
120
121 async fn update(
122 &self,
123 request: Request<api::UpdateTenantRequest>,
124 ) -> Result<Response<()>, Status> {
125 let req_tenant = match &request.get_ref().tenant {
126 Some(v) => v,
127 None => {
128 return Err(Status::invalid_argument("tenant is missing"));
129 }
130 };
131 let tenant_id = Uuid::from_str(&req_tenant.id).map_err(|e| e.status())?;
132
133 self.validator
134 .validate(
135 request.extensions(),
136 validator::ValidateTenantAccess::new(validator::Flag::Update, tenant_id),
137 )
138 .await?;
139
140 let mut dev_addr_prefixes = vec![];
141 for p in &req_tenant.dev_addr_prefixes {
142 let prefix = DevAddrPrefix::from_str(p).map_err(|e| {
143 Status::invalid_argument(format!("Invalid DevAddr prefix: {}, error: {}", p, e))
144 })?;
145 dev_addr_prefixes.push(Some(prefix));
146 }
147
148 // update
149 let _ = tenant::update(tenant::Tenant {
150 id: tenant_id.into(),
151 name: req_tenant.name.clone(),
152 description: req_tenant.description.clone(),
153 can_have_gateways: req_tenant.can_have_gateways,
154 max_device_count: req_tenant.max_device_count as i32,
155 max_gateway_count: req_tenant.max_gateway_count as i32,
156 private_gateways_up: req_tenant.private_gateways_up,
157 private_gateways_down: req_tenant.private_gateways_down,
158 tags: fields::KeyValue::new(req_tenant.tags.clone()),
159 dev_addr_prefixes: fields::DevAddrPrefixVec::new(dev_addr_prefixes),
160 ..Default::default()
161 })
162 .await
163 .map_err(|e| e.status())?;
164
165 let mut resp = Response::new(());
166 resp.metadata_mut()
167 .insert("x-log-tenant_id", req_tenant.id.parse().unwrap());
168
169 Ok(resp)
170 }
171
172 async fn delete(
173 &self,

Callers 1

test_tenantFunction · 0.45

Calls 7

statusMethod · 0.80
pushMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
updateFunction · 0.50
validateMethod · 0.45
intoMethod · 0.45

Tested by 1

test_tenantFunction · 0.36