things3_core/database/queries/
areas.rs1#![allow(deprecated)]
2
3use crate::{
4 database::ThingsDatabase,
5 error::{Result as ThingsResult, ThingsError},
6 models::{Area, ThingsId},
7};
8use chrono::Utc;
9use sqlx::Row;
10use tracing::{debug, instrument};
11
12impl ThingsDatabase {
13 #[instrument]
19 pub async fn get_all_areas(&self) -> ThingsResult<Vec<Area>> {
20 let rows = sqlx::query(
22 r"
23 SELECT
24 uuid, title, visible, `index`
25 FROM TMArea
26 ORDER BY `index` ASC
27 ",
28 )
29 .fetch_all(&self.pool)
30 .await
31 .map_err(|e| ThingsError::unknown(format!("Failed to fetch areas: {e}")))?;
32
33 let mut areas = Vec::new();
34 for row in rows {
35 let uuid_str: String = row.get("uuid");
36 let area = Area {
37 uuid: ThingsId::from_trusted(uuid_str),
38 title: row.get("title"),
39 notes: None, projects: Vec::new(), tags: Vec::new(), created: Utc::now(), modified: Utc::now(), };
45 areas.push(area);
46 }
47
48 debug!("Fetched {} areas", areas.len());
49 Ok(areas)
50 }
51
52 #[instrument(skip(self))]
58 pub async fn get_areas(&self) -> ThingsResult<Vec<Area>> {
59 self.get_all_areas().await
60 }
61}