Files
dht/dht-search/src/search/query.rs
T
2026-08-06 23:02:18 +08:00

46 lines
1.1 KiB
Rust

// 负责构建全文查询过滤排序分页和内容聚合逻辑
use serde::Serialize;
use crate::domain::{AvailabilityStatus, Heat};
#[derive(Debug, Clone, Default)]
pub struct SearchOptions {
pub query: String,
pub offset: usize,
pub limit: usize,
pub min_size: Option<u64>,
pub max_size: Option<u64>,
pub extension: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SearchHit {
pub info_hash: String,
pub name: String,
pub total_size: u64,
pub file_count: u64,
pub first_seen: u64,
pub last_seen: u64,
pub seen_count: u64,
pub content_key: String,
pub score: f32,
pub heat: Heat,
pub availability: AvailabilitySummary,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct AvailabilitySummary {
pub status: AvailabilityStatus,
pub last_verified_at: Option<u64>,
pub reachable_peers: u32,
}
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct SearchPage {
pub total: usize,
pub offset: usize,
pub limit: usize,
pub hits: Vec<SearchHit>,
}