use anyhow::Result; use crate::db::CurrPool; #[derive(Debug, Default, Clone)] pub struct RankRecord { pub id: i64, pub user_id: i64, pub rank_id: i64, pub author_id: i64, pub created_at: i64, } impl RankRecord { pub async fn insert_new(&self, pool: &CurrPool) -> Result { let session = sqlx::query_as!( RankRecord, r#" INSERT INTO records_ranks (user_id, rank_id, author_id, created_at) VALUES ($1, $2, $3, $4) RETURNING * "#, self.user_id, self.rank_id, self.author_id, self.created_at, ) .fetch_one(pool) .await?; Ok(session) } pub async fn get_by_id(pool: &CurrPool, id: i64) -> anyhow::Result { let session = sqlx::query_as!(RankRecord, "SELECT * FROM records_ranks WHERE id = $1", id) .fetch_one(pool) .await?; Ok(session) } pub async fn get_by_user_id(pool: &CurrPool, id: i64) -> anyhow::Result> { let session = sqlx::query_as!( RankRecord, "SELECT * FROM records_ranks WHERE user_id = $1", id ) .fetch_all(pool) .await?; Ok(session) } pub async fn get_by_author_id(pool: &CurrPool, id: i64) -> anyhow::Result> { let session = sqlx::query_as!( RankRecord, "SELECT * FROM records_ranks WHERE author_id = $1", id ) .fetch_all(pool) .await?; Ok(session) } pub async fn get_by_rank_id(pool: &CurrPool, id: i64) -> anyhow::Result> { let session = sqlx::query_as!( RankRecord, "SELECT * FROM records_ranks WHERE rank_id = $1", id ) .fetch_all(pool) .await?; Ok(session) } }