algohub_server/utils/
category.rs1use 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}