use crate::diesel::{prelude::*, PgConnection, QueryDsl}; use crate::models::*; use crate::schema::*; use diesel::r2d2::{ConnectionManager, Pool}; use std::error::Error; use tokio_diesel::*; use uuid::Uuid; pub async fn create_block( pool: &Pool>, block: InsertableBlock, ) -> Result> { let inserted: Block = diesel::insert_into(blocks::table) .values(block) .get_result_async(pool) .await?; Ok(inserted) } pub async fn update_block( pool: &Pool>, block: Block, ) -> Result> { use crate::schema::blocks::dsl::*; let result = diesel::update(blocks.filter(id.eq(block.id))) .set(( block_type.eq(block.block_type), children.eq(block.children), props.eq(block.props), user_id.eq(block.user_id), )) .get_result_async(pool) .await?; Ok(result) } pub async fn find_block_by_id( pool: &Pool>, block_id: Uuid, ) -> Result> { use crate::schema::blocks::dsl::*; let result: Block = blocks.find(block_id).get_result_async(pool).await?; log::error!("{:?}", result); Ok(result) } pub async fn delete_block_by_id( pool: &Pool>, block_id: Uuid, ) -> Result> { use crate::schema::blocks::dsl::*; let result: Block = diesel::delete(blocks.filter(id.eq(block_id))) .get_result_async(pool) .await?; Ok(result) }