1mod db;
4mod error;
5mod event;
6mod filter;
7mod key;
8pub use secp256k1;
9
10pub use {
11 db::CheckEventResult, db::Db, db::Iter, error::Error, event::now, event::ArchivedEventIndex,
12 event::Event, event::EventIndex, event::FromEventData, filter::Filter, filter::SortList,
13};
14
15pub use nostr_kv as kv;
16
17#[derive(Debug, Clone)]
19pub struct Stats {
20 pub scan_index: u64,
21 pub get_data: u64,
22 pub get_index: u64,
23}
24
25#[cfg(feature = "search")]
26use charabia::Segment;
27
28#[cfg(feature = "search")]
29pub fn segment(content: &str) -> Vec<Vec<u8>> {
31 let iter = content.segment_str();
32 let mut words = iter
33 .filter_map(|s| {
34 let s = s.to_lowercase();
35 let bytes = s.as_bytes();
36 if bytes.len() < 255 {
38 Some(bytes.to_vec())
39 } else {
40 None
41 }
42 })
43 .collect::<Vec<_>>();
44 words.sort();
45 words.dedup();
46 words
47}