aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-11 16:44:29 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-11 16:44:29 +0100
commitd79e74cc8ece8a0f63164fb458b99eea38d02525 (patch)
tree9dcd1ea83aa95e5dcd06089b296ba74a5d58bbe1
parentabdcefb94b561c949ac5144d8fbe1100cc0fe58a (diff)
downloadjellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar
jellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar.bz2
jellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar.zst
fix text search prefix bug
-rw-r--r--database/src/kv/index.rs4
-rw-r--r--stream/src/cues.rs4
2 files changed, 7 insertions, 1 deletions
diff --git a/database/src/kv/index.rs b/database/src/kv/index.rs
index e4f707c..591aeee 100644
--- a/database/src/kv/index.rs
+++ b/database/src/kv/index.rs
@@ -69,11 +69,13 @@ pub fn update_index(
for tok in &tokens {
for mut k in ks.clone() {
k.push(0);
+ k.extend((tok.len() as u32).to_be_bytes());
k.extend(tok.as_bytes());
index_counter(txn, &k, remove)?;
}
for mut k in ks.clone() {
k.push(1);
+ k.extend((tok.len() as u32).to_be_bytes());
k.extend(tok.as_bytes());
k.extend(row.to_be_bytes());
index_marker(txn, &k, remove)?;
@@ -196,6 +198,7 @@ pub fn iter_index<'a>(
}
let mut min_token_prefix = prefix.clone();
min_token_prefix.push(1);
+ min_token_prefix.extend((min_tok.len() as u32).to_be_bytes());
min_token_prefix.extend(min_tok.as_bytes());
Box::new(
PrefixIterator {
@@ -211,6 +214,7 @@ pub fn iter_index<'a>(
for token in &search_tokens {
let mut k = prefix.clone();
k.push(1);
+ k.extend((token.len() as u32).to_be_bytes());
k.extend(token.as_bytes());
k.extend(rn.to_be_bytes());
let v = match txn.get(&k) {
diff --git a/stream/src/cues.rs b/stream/src/cues.rs
index d11e2d7..b48683d 100644
--- a/stream/src/cues.rs
+++ b/stream/src/cues.rs
@@ -7,6 +7,7 @@
use anyhow::{Result, anyhow};
use jellycache::{Cache, HashKey};
use jellyremuxer::{demuxers::create_demuxer_autodetect, matroska::TrackType};
+use log::info;
use serde::{Deserialize, Serialize};
use std::{collections::BTreeMap, fs::File, path::Path, sync::Arc};
@@ -33,6 +34,7 @@ pub fn generate_cues(cache: &Cache, path: &Path) -> Result<Arc<StatsAndCues>> {
cache.cache_memory(
&format!("media/generated-cues-v2/{}.json", HashKey(path)),
move || {
+ info!("generating cues for {path:?}");
let media = File::open(path)?;
let mut media = create_demuxer_autodetect(Box::new(media))?
.ok_or(anyhow!("media format unknown"))?;
@@ -73,7 +75,7 @@ pub fn generate_cues(cache: &Cache, path: &Path) -> Result<Arc<StatsAndCues>> {
.clusters += 1;
}
}
-
+ info!("writing {} cues", cues.len());
Ok(StatsAndCues { stats, cues })
},
)