use crate::app_context::AppContext;
use anyhow::{Context, Result};
use document_io::{
ExportDjotDto, ExportDocxDto, ExportDocxResultDto, ExportEpubDto, ExportEpubResultDto,
ExportHtmlDto, ExportLatexDto, ExportLatexResultDto, ExportMarkdownDto, ExportPdfDto,
ExportPdfResultDto, ExportPlainTextDto, ImportDjotDto, ImportDjotResultDto, ImportHtmlDto,
ImportHtmlResultDto, ImportMarkdownDto, ImportMarkdownResultDto, ImportPlainTextDto,
document_io_controller,
};
use common::long_operation::OperationProgress;
use common::parser_tools::{DjotExportOptions, MarkdownExportOptions, PlainTextExportOptions};
pub fn import_plain_text(ctx: &AppContext, dto: &ImportPlainTextDto) -> Result<()> {
document_io_controller::import_plain_text(&ctx.db_context, &ctx.event_hub, dto)
.context("import_plain_text")
}
pub fn export_plain_text(ctx: &AppContext) -> Result<ExportPlainTextDto> {
document_io_controller::export_plain_text(&ctx.db_context, &ctx.event_hub)
.context("export_plain_text")
}
pub fn export_plain_text_indented(ctx: &AppContext) -> Result<ExportPlainTextDto> {
export_plain_text_with(
ctx,
PlainTextExportOptions {
quote_indent: true,
..PlainTextExportOptions::addressable()
},
)
}
pub fn export_plain_text_with(
ctx: &AppContext,
options: PlainTextExportOptions,
) -> Result<ExportPlainTextDto> {
document_io_controller::export_plain_text_with(&ctx.db_context, &ctx.event_hub, options)
.context("export_plain_text_with")
}
pub fn import_markdown(ctx: &AppContext, dto: &ImportMarkdownDto) -> Result<String> {
document_io_controller::import_markdown(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("import_markdown")
}
pub fn get_import_markdown_progress(
ctx: &AppContext,
operation_id: &str,
) -> Option<OperationProgress> {
document_io_controller::get_import_markdown_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_import_markdown_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ImportMarkdownResultDto>> {
document_io_controller::get_import_markdown_result(
&ctx.long_operation_manager.lock(),
operation_id,
)
.context("getting import_markdown result")
}
pub fn export_markdown(ctx: &AppContext) -> Result<ExportMarkdownDto> {
document_io_controller::export_markdown(&ctx.db_context, &ctx.event_hub)
.context("export_markdown")
}
pub fn export_markdown_with(
ctx: &AppContext,
options: MarkdownExportOptions,
) -> Result<ExportMarkdownDto> {
document_io_controller::export_markdown_with(&ctx.db_context, &ctx.event_hub, options)
.context("export_markdown_with")
}
pub fn import_djot(ctx: &AppContext, dto: &ImportDjotDto) -> Result<String> {
document_io_controller::import_djot(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("import_djot")
}
pub fn import_djot_sync(ctx: &AppContext, dto: &ImportDjotDto) -> Result<ImportDjotResultDto> {
document_io_controller::import_djot_sync(&ctx.db_context, &ctx.event_hub, dto)
.context("import_djot_sync")
}
pub fn get_import_djot_progress(ctx: &AppContext, operation_id: &str) -> Option<OperationProgress> {
document_io_controller::get_import_djot_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_import_djot_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ImportDjotResultDto>> {
document_io_controller::get_import_djot_result(&ctx.long_operation_manager.lock(), operation_id)
.context("getting import_djot result")
}
pub fn export_djot(ctx: &AppContext, options: &DjotExportOptions) -> Result<ExportDjotDto> {
document_io_controller::export_djot(&ctx.db_context, &ctx.event_hub, options)
.context("export_djot")
}
pub fn import_html(ctx: &AppContext, dto: &ImportHtmlDto) -> Result<String> {
document_io_controller::import_html(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("import_html")
}
pub fn get_import_html_progress(ctx: &AppContext, operation_id: &str) -> Option<OperationProgress> {
document_io_controller::get_import_html_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_import_html_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ImportHtmlResultDto>> {
document_io_controller::get_import_html_result(&ctx.long_operation_manager.lock(), operation_id)
.context("getting import_html result")
}
pub fn export_html(ctx: &AppContext) -> Result<ExportHtmlDto> {
document_io_controller::export_html(&ctx.db_context, &ctx.event_hub).context("export_html")
}
pub fn export_html_with_options(
ctx: &AppContext,
options: common::parser_tools::HtmlExportOptions,
) -> Result<ExportHtmlDto> {
document_io::document_io_controller::export_html_with_options(
&ctx.db_context,
&ctx.event_hub,
options,
)
}
pub fn export_latex(ctx: &AppContext, dto: &ExportLatexDto) -> Result<ExportLatexResultDto> {
document_io_controller::export_latex(&ctx.db_context, &ctx.event_hub, dto)
.context("export_latex")
}
pub fn export_docx(ctx: &AppContext, dto: &ExportDocxDto) -> Result<String> {
document_io_controller::export_docx(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("export_docx")
}
pub fn get_export_docx_progress(ctx: &AppContext, operation_id: &str) -> Option<OperationProgress> {
document_io_controller::get_export_docx_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_export_docx_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ExportDocxResultDto>> {
document_io_controller::get_export_docx_result(&ctx.long_operation_manager.lock(), operation_id)
.context("getting export_docx result")
}
pub fn export_epub(ctx: &AppContext, dto: &ExportEpubDto) -> Result<String> {
document_io_controller::export_epub(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("export_epub")
}
pub fn get_export_epub_progress(ctx: &AppContext, operation_id: &str) -> Option<OperationProgress> {
document_io_controller::get_export_epub_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_export_epub_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ExportEpubResultDto>> {
document_io_controller::get_export_epub_result(&ctx.long_operation_manager.lock(), operation_id)
.context("getting export_epub result")
}
pub fn export_pdf(ctx: &AppContext, dto: &ExportPdfDto) -> Result<String> {
document_io_controller::export_pdf(
&ctx.db_context,
&ctx.event_hub,
&mut ctx.long_operation_manager.lock(),
dto,
)
.context("export_pdf")
}
pub fn get_export_pdf_progress(ctx: &AppContext, operation_id: &str) -> Option<OperationProgress> {
document_io_controller::get_export_pdf_progress(
&ctx.long_operation_manager.lock(),
operation_id,
)
}
pub fn get_export_pdf_result(
ctx: &AppContext,
operation_id: &str,
) -> Result<Option<ExportPdfResultDto>> {
document_io_controller::get_export_pdf_result(&ctx.long_operation_manager.lock(), operation_id)
.context("getting export_pdf result")
}