fix(docs): resolve rustdoc broken links and dead_code warnings
Some checks failed
CI / check (push) Failing after 5m18s
CI / build (push) Has been skipped

doc 构建报 8 个 broken_intra_doc_links + dx 构建报 7 个 dead_code 警告。
两者根源相同:被引用的常量/类型/模块要么是 server-only(消费方都在
#[cfg(feature="server")] 块里),要么是跨 cfg 引用(host doc 构建看不到
wasm32-only 类型)。

dead_code:给 sql_console 的 MAX_ROWS/ABSOLUTELY_FORBIDDEN/GuardResult 与
backup 的 BACKUP_DIR/FILENAME_RE/BACKUP_SIGNATURE 加 #[cfg(feature="server")]
gate——这些都是安全护栏常量,消费方全在 server fn 体里,WASM 构建剥掉 fn 体后
常量即成死代码。sysinfo_sampler 的 WASM 桩 read_snapshot 加 allow(dead_code)
(与 codemirror_bridge 既有处理一致)。

rustdoc 链接:跨模块引用改全路径(crate::xxx),跨 cfg 引用(EditorHandle 在
wasm32 mod 内、host doc 构建不可见)转义为纯文本。

验证:cargo doc(0 warning)+ cargo check(default)+ wasm32 check 全部干净。
This commit is contained in:
xfy 2026-06-30 17:42:52 +08:00
parent 95fb8d8698
commit 5426458f4a
8 changed files with 20 additions and 7 deletions

View File

@ -5,7 +5,7 @@
//! 备份:探测 pg_dump 可用性——可用则子进程生成完整 .sql不可用则回退纯 SQL
//! (仅数据)。备份文件含签名头。
//! 恢复:仅接受本系统生成的备份(签名校验)+ 二次确认 + 路径穿越防护。
//! 长耗时操作走后台任务 + 进度轮询(见 [`super::tasks`])。
//! 长耗时操作走后台任务 + 进度轮询(见 [`crate::api::database::tasks`])。
// Component/PathBuf/chrono::Utc 仅 server 构建的备份逻辑用到。
#[cfg(feature = "server")]
@ -24,11 +24,17 @@ use crate::api::database::tasks::{self, TaskKind, TaskStatus};
#[cfg(feature = "server")]
use crate::api::error::AppError;
// 以下常量仅被 server 构建的备份/恢复逻辑引用WASM 构建里相关函数体被 cfg 剥掉,
// 故常量也需 gate否则非 server 构建会报 dead_code
/// 备份目录(项目根,与 uploads/ 平级gitignored
#[cfg(feature = "server")]
const BACKUP_DIR: &str = "backups";
/// 文件名白名单正则:仅字母数字下划线点连字符(防路径穿越)。
#[cfg(feature = "server")]
const FILENAME_RE: &str = r"^[a-zA-Z0-9_.\-]+$";
/// 备份文件签名头(恢复时校验,拒绝非本系统文件)。
#[cfg(feature = "server")]
const BACKUP_SIGNATURE: &str = "-- YGGDRASIL BACKUP v1";
/// 备份文件元信息(列表展示用)。

View File

@ -1,7 +1,7 @@
//! 数据库管理 server functions 与 Axum 处理器。
//!
//! 按功能拆分子模块:
//! - [`status`]:数据库运行状态聚合(表/连接/死元组/迁移版本)。
//! - [`crate::api::database::status`]:数据库运行状态聚合(表/连接/死元组/迁移版本)。
//!
//! 后续 task 会新增:`system_status`(服务器状态)、`sql_console`SQL 执行+护栏)、
//! `schema`SQL 补全数据)、`export`(流式导出)、`backup`/`tasks`(备份恢复+进度)。

View File

@ -46,14 +46,20 @@ pub struct SqlResult {
pub truncated: bool,
}
// 以下常量/枚举仅被 server function 体引用WASM 构建里 server fn 体被 cfg 剥掉,
// 故这些符号也需 gate否则非 server 构建会报 dead_code
/// 结果行数上限(超出截断 + 提示)。
#[cfg(feature = "server")]
const MAX_ROWS: usize = 500;
/// 绝对禁止的语句关键词字符串预检sqlparser 无 ObjectType::Database/Schema
/// 命中即拒,不可放行。
#[cfg(feature = "server")]
const ABSOLUTELY_FORBIDDEN: &[&str] = &["drop database", "drop schema", "create database"];
/// 护栏检查返回值。
#[cfg(feature = "server")]
#[derive(Debug)]
enum GuardResult {
Allowed,

View File

@ -3,7 +3,7 @@
//! 数据库运行状态聚合查询(只读)。
//!
//! 全部查询走 `pg_catalog` / `pg_stat_*` / `schema_migrations`,零写、零风险。
//! [`get_db_status`] 在一次 server function 调用里聚合多组数据返回。
//! [`get_db_status`][crate::api::database::status::get_db_status] 在一次 server function 调用里聚合多组数据返回。
use chrono::{DateTime, Utc};
use dioxus::prelude::*;

View File

@ -3,7 +3,7 @@
//! 服务器状态聚合查询(只读):应用内指标 + 主机层指标。
//!
//! 应用内DB 连接池、moka 缓存命中率、活跃会话数、进程运行时间。
//! 主机层sysinfo 后台采样快照CPU/内存/磁盘/load由 [`sysinfo_sampler`] 维护。
//! 主机层sysinfo 后台采样快照CPU/内存/磁盘/load由 [`crate::sysinfo_sampler`] 维护。
use dioxus::prelude::*;
use serde::{Deserialize, Serialize};

View File

@ -3,7 +3,7 @@
//! 备份/恢复的异步任务进度表DashMap
//!
//! create_backup/restore_backup 立即返回 task_id后台任务跑时通过
//! [`update`] 更新进度,前端轮询 [`get_task_progress`]。
//! `update` 更新进度,前端轮询 [`get_task_progress`][crate::api::database::tasks::get_task_progress]。
//! 已完成超过 1 小时的任务惰性清理,避免内存累积。
use chrono::{DateTime, Utc};

View File

@ -2,7 +2,7 @@
//!
//! 封装与 `window.CodeMirrorEditor`IIFE 暴露的全局对象字面量)的全部交互,
//! 严格镜像 [`crate::tiptap_bridge`] 的结构:共享纯数据类型双目标编译,
//! wasm-bindgen extern + [`EditorHandle`] 仅在 WASM 前端编译server 构建无 window
//! wasm-bindgen extern + `EditorHandle` 仅在 WASM 前端编译server 构建无 window
//!
//! 与 tiptap 一样,`CodeMirrorEditor` 是 IIFE 挂在 window 上的**对象字面量**
//! `{ create }`),不是函数——因此用 `js_sys::Reflect::get` 做属性访问拿到,

View File

@ -1,7 +1,7 @@
//! sysinfo 主机指标后台采样。
//!
//! sysinfo 的 CPU% **不是即时值**,需要两次采样间的 delta。因此用后台任务周期
//! 刷新server function 只读 [`RwLock`] 快照(毫秒级返回,零采样成本)。
//! 刷新server function 只读 [`tokio::sync::RwLock`] 快照(毫秒级返回,零采样成本)。
//!
//! 采样间隔由环境变量 `SYSINFO_SAMPLE_SECS` 配置(默认 0.5 秒,支持小数如 0.1)。
@ -101,6 +101,7 @@ pub async fn read_snapshot() -> SystemSnapshot {
}
#[cfg(not(feature = "server"))]
#[allow(dead_code)]
pub async fn read_snapshot() -> SystemSnapshot {
SystemSnapshot::default()
}