fix(docs): resolve rustdoc broken links and dead_code warnings
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:
parent
95fb8d8698
commit
5426458f4a
@ -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";
|
||||
|
||||
/// 备份文件元信息(列表展示用)。
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
//! 数据库管理 server functions 与 Axum 处理器。
|
||||
//!
|
||||
//! 按功能拆分子模块:
|
||||
//! - [`status`]:数据库运行状态聚合(表/连接/死元组/迁移版本)。
|
||||
//! - [`crate::api::database::status`]:数据库运行状态聚合(表/连接/死元组/迁移版本)。
|
||||
//!
|
||||
//! 后续 task 会新增:`system_status`(服务器状态)、`sql_console`(SQL 执行+护栏)、
|
||||
//! `schema`(SQL 补全数据)、`export`(流式导出)、`backup`/`tasks`(备份恢复+进度)。
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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::*;
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
//! 服务器状态聚合查询(只读):应用内指标 + 主机层指标。
|
||||
//!
|
||||
//! 应用内:DB 连接池、moka 缓存命中率、活跃会话数、进程运行时间。
|
||||
//! 主机层:sysinfo 后台采样快照(CPU/内存/磁盘/load),由 [`sysinfo_sampler`] 维护。
|
||||
//! 主机层:sysinfo 后台采样快照(CPU/内存/磁盘/load),由 [`crate::sysinfo_sampler`] 维护。
|
||||
|
||||
use dioxus::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
@ -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};
|
||||
|
||||
@ -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` 做属性访问拿到,
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user