// user repositories use crate::models::{user::User, user_asset::UserAsset}; use super::storage::Storage; use anyhow::{Result, Context}; pub async fn get_user_by_id(storage: &Storage, user_id: &str) -> Result { sqlx::query_as::<_, User>("SELECT * FROM users WHERE id = $1") .bind(user_id) .fetch_one(&storage.0) .await .context("To get user by id.") } pub async fn get_users(storage: &Storage) -> Result> { sqlx::query_as::<_, User>("SELECT * FROM users") .fetch_all(&storage.0) .await .context("To get users.") } pub async fn create_user_asset(storage: &Storage, asset: UserAsset) -> Result<()> { sqlx::query("INSERT INTO user_assets (id, user_id, mime_type, fingerprint, content, created_at) VALUES ($1, $2, $3, $4, $5, $6) ") .bind(&asset.id) .bind(&asset.user_id) .bind(&asset.mime_type) .bind(&asset.fingerprint) .bind(&asset.content) .bind(&asset.created_at) .execute(&storage.0) .await .context("While inserting user asset.")?; // .bind(details_update.avatar.contents.to_vec()) Ok(()) } pub async fn get_user_asset_by_id(storage: &Storage, id: &str) -> Result { sqlx::query_as("SELECT * FROM user_assets WHERE id = $1") .bind(id) .fetch_one(&storage.0) .await .context("To get user asset by id.") }