Compare commits

...

3 Commits

7 changed files with 36 additions and 20 deletions

10
Cargo.lock generated
View File

@ -2907,7 +2907,7 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "letterbox"
version = "0.0.106"
version = "0.0.107"
dependencies = [
"build-info",
"build-info-build",
@ -2933,7 +2933,7 @@ dependencies = [
[[package]]
name = "letterbox-server"
version = "0.0.106"
version = "0.0.107"
dependencies = [
"ammonia",
"anyhow",
@ -3452,7 +3452,7 @@ dependencies = [
[[package]]
name = "notmuch"
version = "0.0.106"
version = "0.0.107"
dependencies = [
"itertools 0.10.5",
"log",
@ -4247,7 +4247,7 @@ dependencies = [
[[package]]
name = "procmail2notmuch"
version = "0.0.106"
version = "0.0.107"
dependencies = [
"anyhow",
]
@ -5326,7 +5326,7 @@ dependencies = [
[[package]]
name = "shared"
version = "0.0.106"
version = "0.0.107"
dependencies = [
"build-info",
"notmuch",

View File

@ -1,6 +1,6 @@
[package]
name = "notmuch"
version = "0.0.106"
version = "0.0.107"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -1,6 +1,6 @@
[package]
name = "procmail2notmuch"
version = "0.0.106"
version = "0.0.107"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -1,6 +1,6 @@
[package]
name = "letterbox-server"
version = "0.0.106"
version = "0.0.107"
edition = "2021"
default-run = "letterbox-server"

View File

@ -267,6 +267,15 @@ struct SearchCursor {
tantivy_offset: i32,
}
fn request_id() -> String {
let now = std::time::SystemTime::now();
let nanos = now
.duration_since(std::time::SystemTime::UNIX_EPOCH)
.unwrap_or_default()
.as_nanos();
format!("{nanos:x}")
}
pub struct QueryRoot;
#[Object]
impl QueryRoot {
@ -275,6 +284,7 @@ impl QueryRoot {
Ok(shared::build_version(bi))
}
#[instrument(skip_all, fields(query=query))]
#[instrument(skip_all, fields(query=query, request_id=request_id()))]
async fn count<'ctx>(&self, ctx: &Context<'ctx>, query: String) -> Result<usize, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -297,7 +307,7 @@ impl QueryRoot {
// TODO: this function doesn't get parallelism, possibly because notmuch is sync and blocks,
// rewrite that with tokio::process:Command
#[instrument(skip_all, fields(query=query))]
#[instrument(skip_all, fields(query=query, request_id=request_id()))]
async fn search<'ctx>(
&self,
ctx: &Context<'ctx>,
@ -412,10 +422,16 @@ impl QueryRoot {
}
let mut connection = Connection::new(has_previous_page, has_next_page);
let mut newsreader_offset = 0;
let mut notmuch_offset = 0;
let mut newsreader_offset =
after.as_ref().map(|sc| sc.newsreader_offset).unwrap_or(0);
let mut notmuch_offset = after.as_ref().map(|sc| sc.notmuch_offset).unwrap_or(0);
#[cfg(feature = "tantivy")]
let mut tantivy_offset = 0;
let tantivy_offset = after.as_ref().map(|sc| sc.tantivy_offset).unwrap_or(0);
info!(
"newsreader_offset ({}) notmuch_offset ({})",
newsreader_offset, notmuch_offset,
);
connection.edges.extend(results.into_iter().map(|item| {
let thread_summary;
@ -448,7 +464,7 @@ impl QueryRoot {
.await?)
}
#[instrument(skip_all)]
#[instrument(skip_all, fields(request_id=request_id()))]
async fn tags<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Tag>> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -457,7 +473,7 @@ impl QueryRoot {
tags.append(&mut nm::tags(nm, needs_unread)?);
Ok(tags)
}
#[instrument(skip_all, fields(thread_id=thread_id))]
#[instrument(skip_all, fields(thread_id=thread_id, request_id=request_id()))]
async fn thread<'ctx>(&self, ctx: &Context<'ctx>, thread_id: String) -> Result<Thread, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
let pool = ctx.data_unchecked::<PgPool>();
@ -534,7 +550,7 @@ async fn tantivy_search(
pub struct Mutation;
#[Object]
impl Mutation {
#[instrument(skip_all, fields(query=query, unread=unread))]
#[instrument(skip_all, fields(query=query, unread=unread, request_id=request_id()))]
async fn set_read_status<'ctx>(
&self,
ctx: &Context<'ctx>,
@ -553,7 +569,7 @@ impl Mutation {
nm::set_read_status(nm, &query, unread).await?;
Ok(true)
}
#[instrument(skip_all, fields(query=query, tag=tag))]
#[instrument(skip_all, fields(query=query, tag=tag, request_id=request_id()))]
async fn tag_add<'ctx>(
&self,
ctx: &Context<'ctx>,
@ -565,7 +581,7 @@ impl Mutation {
nm.tag_add(&tag, &query)?;
Ok(true)
}
#[instrument(skip_all, fields(query=query, tag=tag))]
#[instrument(skip_all, fields(query=query, tag=tag, request_id=request_id()))]
async fn tag_remove<'ctx>(
&self,
ctx: &Context<'ctx>,
@ -588,7 +604,7 @@ impl Mutation {
Ok(true)
}
#[instrument(skip_all)]
#[instrument(skip_all, fields(request_id=request_id()))]
async fn refresh<'ctx>(&self, ctx: &Context<'ctx>) -> Result<bool, Error> {
let nm = ctx.data_unchecked::<Notmuch>();
info!("{}", String::from_utf8_lossy(&nm.new()?));

View File

@ -1,6 +1,6 @@
[package]
name = "shared"
version = "0.0.106"
version = "0.0.107"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -1,5 +1,5 @@
[package]
version = "0.0.106"
version = "0.0.107"
name = "letterbox"
repository = "https://github.com/seed-rs/seed-quickstart"
authors = ["Bill Thiede <git@xinu.tv>"]