use crate::context::GriteContext;
use crate::types::*;
use libgrite_core::GriteError;
#[allow(unused_macros)]
macro_rules! async_wrapper {
($name:ident, $sync_fn:path, ($ctx:ident, $opts:ident)) => {
pub async fn $name($ctx: &GriteContext, $opts: $opts) -> Result<$ret, GriteError>
where
$opts: Send + 'static,
$ret: Send + 'static,
{
let ctx = $ctx.clone();
tokio::task::spawn_blocking(move || $sync_fn(&ctx, $opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
};
}
pub async fn issue_create_async(
ctx: &GriteContext,
opts: IssueCreateOptions,
) -> Result<IssueCreateResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_create(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_list_async(
ctx: &GriteContext,
opts: IssueListOptions,
) -> Result<IssueListResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_list(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_show_async(
ctx: &GriteContext,
opts: IssueShowOptions,
) -> Result<IssueShowResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_show(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_update_async(
ctx: &GriteContext,
opts: IssueUpdateOptions,
) -> Result<IssueUpdateResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_update(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_comment_async(
ctx: &GriteContext,
opts: IssueCommentOptions,
) -> Result<IssueCommentResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_comment(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_close_async(
ctx: &GriteContext,
opts: IssueStateOptions,
) -> Result<IssueStateResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_close(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn issue_reopen_async(
ctx: &GriteContext,
opts: IssueStateOptions,
) -> Result<IssueStateResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::issue::issue_reopen(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn sync_async(ctx: &GriteContext, opts: SyncOptions) -> Result<SyncResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::sync::sync(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn export_async(
ctx: &GriteContext,
opts: ExportOptions,
) -> Result<ExportResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::export::export(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn rebuild_async(
ctx: &GriteContext,
opts: RebuildOptions,
) -> Result<RebuildResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::rebuild::rebuild(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn context_index_async(
ctx: &GriteContext,
opts: ContextIndexOptions,
) -> Result<ContextIndexResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::context_cmd::context_index(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn db_check_async(
ctx: &GriteContext,
opts: DbCheckOptions,
) -> Result<DbCheckResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::db::db_check(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}
pub async fn doctor_async(
ctx: &GriteContext,
opts: DoctorOptions,
) -> Result<DoctorResult, GriteError> {
let ctx = ctx.clone();
tokio::task::spawn_blocking(move || crate::doctor::doctor(&ctx, &opts))
.await
.map_err(|e| GriteError::Internal(format!("task join error: {}", e)))?
}