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 消费者。