fix(maildir): 同步消息标记到 Maildir

- 标记已读、加星时同步重写 `raw_path`,保持数据库与文件系统状态一致。
- 新增 Maildir 标记路径计算与迁移逻辑,支持读/星标变化后调整目录和文件名。
- 补充测试覆盖已读、未读、加星场景的 Maildir 路径变化。
This commit is contained in:
LanQin_
2026-06-24 15:27:30 +08:00
parent 1788d49a59
commit f8d058f7e4
4 changed files with 163 additions and 8 deletions
@@ -1087,10 +1087,18 @@ func (a *App) applyRuleActions(ctx context.Context, mailboxID, messageID string,
}
}
case "star":
starred := true
if err := a.updateMessageMaildirFlags(ctx, messageID, nil, &starred); err != nil {
return err
}
if _, err := a.db.ExecContext(ctx, `UPDATE messages SET is_starred=1, updated_at=? WHERE id=?`, now, messageID); err != nil {
return err
}
case "mark-read":
read := true
if err := a.updateMessageMaildirFlags(ctx, messageID, &read, nil); err != nil {
return err
}
if _, err := a.db.ExecContext(ctx, `UPDATE messages SET is_read=1, updated_at=? WHERE id=?`, now, messageID); err != nil {
return err
}