nodedb_lite/query/meta_ops/
array.rs1use nodedb_types::result::QueryResult;
5use nodedb_types::value::Value;
6
7use crate::error::LiteError;
8use crate::query::engine::LiteQueryEngine;
9use crate::storage::engine::StorageEngine;
10
11pub async fn handle_alter_array<S: StorageEngine>(
16 engine: &LiteQueryEngine<S>,
17 array_id: &str,
18 audit_retain_ms: Option<Option<i64>>,
19 minimum_audit_retain_ms: Option<Option<u64>>,
20) -> Result<QueryResult, LiteError> {
21 use nodedb_types::Namespace;
22
23 if let Some(new_retain) = audit_retain_ms {
25 let key = format!("array_retain/{array_id}");
26 match new_retain {
27 Some(ms) => {
28 engine
29 .storage
30 .put(Namespace::Meta, key.as_bytes(), &ms.to_le_bytes())
31 .await?;
32 }
33 None => {
34 engine
35 .storage
36 .delete(Namespace::Meta, key.as_bytes())
37 .await?;
38 }
39 }
40 }
41
42 if let Some(new_min) = minimum_audit_retain_ms {
44 let key = format!("array_min_retain/{array_id}");
45 match new_min {
46 Some(ms) => {
47 engine
48 .storage
49 .put(Namespace::Meta, key.as_bytes(), &ms.to_le_bytes())
50 .await?;
51 }
52 None => {
53 engine
54 .storage
55 .delete(Namespace::Meta, key.as_bytes())
56 .await?;
57 }
58 }
59 }
60
61 Ok(QueryResult {
62 columns: vec!["array_id".into()],
63 rows: vec![vec![Value::String(array_id.to_owned())]],
64 rows_affected: 1,
65 command: None,
66 })
67}