algohub_server/utils/
category.rs

1use anyhow::{Ok, Result};
2use surrealdb::{engine::remote::ws::Client, sql::Thing, Surreal};
3
4use crate::models::category::{Category, CategoryData};
5
6pub async fn create(db: &Surreal<Client>, data: CategoryData<'_>) -> Result<Option<Category>> {
7    Ok(db
8        .create("category")
9        .content(Category {
10            id: None,
11            name: data.name.to_string(),
12            owner: data.owner.into(),
13            created_at: chrono::Local::now().naive_local(),
14            updated_at: chrono::Local::now().naive_local(),
15        })
16        .await?)
17}
18
19pub async fn delete(db: &Surreal<Client>, id: &str) -> Result<Option<Category>> {
20    Ok(db.delete(("category", id)).await?)
21}
22
23pub async fn list(db: &Surreal<Client>, owner: Thing) -> Result<Vec<Category>> {
24    Ok(db
25        .query("SELECT * FROM category WHERE owner = $owner")
26        .bind(("owner", owner))
27        .await?
28        .take(0)?)
29}