Reads a metadata value by key, returning `None` if not set.
(&self, key: &str)
| 7 | impl Database { |
| 8 | /// Reads a metadata value by key, returning `None` if not set. |
| 9 | pub async fn get_metadata(&self, key: &str) -> Result<Option<String>> { |
| 10 | let mut rows = self |
| 11 | .conn() |
| 12 | .query("SELECT value FROM metadata WHERE key = ?1", params![key]) |
| 13 | .await |
| 14 | .map_err(|e| TraceDecayError::Database { |
| 15 | message: format!("failed to query metadata: {e}"), |
| 16 | operation: "get_metadata".to_string(), |
| 17 | })?; |
| 18 | |
| 19 | match rows.next().await.map_err(|e| TraceDecayError::Database { |
| 20 | message: format!("failed to read metadata row: {e}"), |
| 21 | operation: "get_metadata".to_string(), |
| 22 | })? { |
| 23 | Some(row) => { |
| 24 | let value: String = row.get(0).map_err(|e| TraceDecayError::Database { |
| 25 | message: format!("failed to read metadata value: {e}"), |
| 26 | operation: "get_metadata".to_string(), |
| 27 | })?; |
| 28 | Ok(Some(value)) |
| 29 | } |
| 30 | None => Ok(None), |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | /// Sets a metadata value, creating or replacing the entry. |
| 35 | pub async fn set_metadata(&self, key: &str, value: &str) -> Result<()> { |