Skip to main content

import_backup

Function import_backup 

Source
pub async fn import_backup(
    connect_info: Option<Extension<ConnectInfo<SocketAddr>>>,
    headers: HeaderMap,
    multipart: Multipart,
) -> Result<Json<Value>, (StatusCode, Json<Value>)>
Expand description

Axum 处理器:导入备份(multipart 流式落盘,admin 鉴权 + 签名校验 + 同名拒绝)。

设计要点(见 docs/adr/0001-backup-import.md):

  • 两步式:导入只入库 backups/ 并出现在列表,恢复仍走 restore_backup 管线;
  • 导入时即校验签名(拒绝外来 SQL 入库),与恢复时的签名校验是两层独立防线;
  • 流式写 .tmp + 原子 rename:半截文件永不入库,任一失败路径清理 tmp;
  • 体积双保险:路由 DefaultBodyLimit(上限 + MULTIPART_FRAME_SLACK) 兜整个请求体,此处流式计数只计载荷字节,超限 413 早断;
  • 仅 server 构建:纯 Axum 路由(在 main.rs 注册),无 WASM 消费者。