Aerogramme refactoring #57

Merged
quentin merged 16 commits from feat/more-imap-qol into main 2024-01-06 10:38:37 +00:00
5 changed files with 16 additions and 9 deletions
Showing only changes of commit 335750a29a - Show all commits

View file

@ -228,19 +228,16 @@ impl MailboxView {
) -> Result<(ImapUidvalidity, Vec<(ImapUid, ImapUid)>, Vec<Body<'static>>)> { ) -> Result<(ImapUidvalidity, Vec<(ImapUid, ImapUid)>, Vec<Body<'static>>)> {
let mails = self.get_mail_ids(sequence_set, *is_uid_copy)?; let mails = self.get_mail_ids(sequence_set, *is_uid_copy)?;
let mut new_uuids = vec![];
for mi in mails.iter() { for mi in mails.iter() {
let copy_action = to.copy_from(&self.mailbox, mi.uuid).await?; to.move_from(&self.mailbox, mi.uuid).await?;
new_uuids.push(copy_action);
self.mailbox.delete(mi.uuid).await?
} }
let mut ret = vec![]; let mut ret = vec![];
let to_state = to.current_uid_index().await; let to_state = to.current_uid_index().await;
for (mi, new_uuid) in mails.iter().zip(new_uuids.iter()) { for mi in mails.iter() {
let dest_uid = to_state let dest_uid = to_state
.table .table
.get(new_uuid) .get(&mi.uuid)
.ok_or(anyhow!("moved mail not in destination mailbox"))? .ok_or(anyhow!("moved mail not in destination mailbox"))?
.0; .0;
ret.push((mi.uid, dest_uid)); ret.push((mi.uid, dest_uid));

View file

@ -149,7 +149,6 @@ impl Mailbox {
/// Move an email from an other Mailbox to this mailbox /// Move an email from an other Mailbox to this mailbox
/// (use this when possible, as it allows for a certain number of storage optimizations) /// (use this when possible, as it allows for a certain number of storage optimizations)
#[allow(dead_code)]
pub async fn move_from(&self, from: &Mailbox, uuid: UniqueIdent) -> Result<()> { pub async fn move_from(&self, from: &Mailbox, uuid: UniqueIdent) -> Result<()> {
if self.id == from.id { if self.id == from.id {
bail!("Cannot copy move same mailbox"); bail!("Cannot copy move same mailbox");
@ -403,8 +402,6 @@ impl MailboxInternal {
Ok(new_id) Ok(new_id)
} }
#[allow(dead_code)]
// 2023-05-15 will probably be used later
async fn move_from(&mut self, from: &mut MailboxInternal, id: UniqueIdent) -> Result<()> { async fn move_from(&mut self, from: &mut MailboxInternal, id: UniqueIdent) -> Result<()> {
self.copy_internal(from, id, id).await?; self.copy_internal(from, id, id).await?;
from.delete(id).await?; from.delete(id).await?;

View file

@ -3,6 +3,8 @@ use std::io::Write;
pub mod incoming; pub mod incoming;
pub mod mailbox; pub mod mailbox;
pub mod snapshot;
pub mod query;
pub mod uidindex; pub mod uidindex;
pub mod unique_ident; pub mod unique_ident;
pub mod user; pub mod user;

0
src/mail/query.rs Normal file
View file

11
src/mail/snapshot.rs Normal file
View file

@ -0,0 +1,11 @@
use std::sync::Arc;
use super::mailbox::Mailbox;
use super::uidindex::UidIndex;
pub struct Snapshot {
pub mailbox: Arc<Mailbox>,
pub snapshot: UidIndex,
}
impl Snapshot {
}