feat(rustadapter): index notebook
This commit is contained in:
parent
e292058b5c
commit
ea3a307f96
12 changed files with 170 additions and 18 deletions
|
|
@ -4,6 +4,73 @@ pub use crate::java_glue::*;
|
|||
|
||||
use rifgen::rifgen_attr::*;
|
||||
|
||||
use popequer::{database::read::read_db, fs_notebook::NotebookContext, indexer::index_and_save, views::calendar::get_upcoming_events};
|
||||
|
||||
use serde::Serialize;
|
||||
|
||||
struct PopequerAdapter {
|
||||
context: NotebookContext
|
||||
}
|
||||
|
||||
#[generate_interface]
|
||||
enum PopequerAdapterErr {
|
||||
ReadDb,
|
||||
Indexing,
|
||||
View
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct EventItem {
|
||||
name: String,
|
||||
start_time: String,
|
||||
end_time: Option<String>
|
||||
}
|
||||
|
||||
impl PopequerAdapter {
|
||||
#[generate_interface(constructor)]
|
||||
fn new(notebook_fs_path: String) -> PopequerAdapter {
|
||||
PopequerAdapter {
|
||||
context: NotebookContext {
|
||||
base_path: notebook_fs_path.into()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[generate_interface]
|
||||
fn index(&self) -> String {
|
||||
match index_and_save(
|
||||
&self.context
|
||||
) {
|
||||
Ok(_n) => format!("Indexing OK"),
|
||||
Err(err) => format!("Indexing ERR {err:?}")
|
||||
}
|
||||
}
|
||||
|
||||
#[generate_interface]
|
||||
fn upcoming_events(&self) -> String {
|
||||
let notebook = match read_db(&self.context) {
|
||||
Ok(n) => n,
|
||||
Err(err) => {
|
||||
return format!("Err: {err:?}");
|
||||
}
|
||||
};
|
||||
let events = match get_upcoming_events(¬ebook) {
|
||||
Ok(x) => x,
|
||||
Err(err) => {
|
||||
return format!("Err: {err:?}");
|
||||
}
|
||||
};
|
||||
let formatted_events: Vec<EventItem> = events.iter().map(|e| {
|
||||
EventItem {
|
||||
name: e.name.clone(),
|
||||
start_time: e.start_time.to_rfc3339(),
|
||||
end_time: e.end_time.map(|x| x.to_rfc3339())
|
||||
}
|
||||
}).collect();
|
||||
serde_json::to_string(&formatted_events).expect("Cannot serialize into json")
|
||||
}
|
||||
}
|
||||
|
||||
struct Foo {
|
||||
data: i32
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue