mirror of
https://github.com/chatmail/core.git
synced 2026-05-23 00:36:32 +03:00
fix: cleanup imap and imap_sync records without transport in housekeeping
Previously transports deleted via sync messages left unused `imap` entries.
This commit is contained in:
@@ -243,11 +243,6 @@ impl Context {
|
|||||||
Ok((id, add_timestamp))
|
Ok((id, add_timestamp))
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
transaction.execute("DELETE FROM imap WHERE transport_id=?", (transport_id,))?;
|
|
||||||
transaction.execute(
|
|
||||||
"DELETE FROM imap_sync WHERE transport_id=?",
|
|
||||||
(transport_id,),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
// Removal timestamp should not be lower than addition timestamp
|
// Removal timestamp should not be lower than addition timestamp
|
||||||
// to be accepted by other devices when synced.
|
// to be accepted by other devices when synced.
|
||||||
|
|||||||
18
src/sql.rs
18
src/sql.rs
@@ -883,6 +883,24 @@ pub async fn housekeeping(context: &Context) -> Result<()> {
|
|||||||
.log_err(context)
|
.log_err(context)
|
||||||
.ok();
|
.ok();
|
||||||
|
|
||||||
|
// Cleanup `imap` and `imap_sync` entries for deleted transports.
|
||||||
|
//
|
||||||
|
// Transports may be deleted directly or via sync messages,
|
||||||
|
// so it is easier to cleanup orphaned entries in a single place.
|
||||||
|
context
|
||||||
|
.sql
|
||||||
|
.execute(
|
||||||
|
"DELETE FROM imap WHERE transport_id NOT IN (SELECT transports.id FROM transports)",
|
||||||
|
(),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.log_err(context)
|
||||||
|
.ok();
|
||||||
|
context.sql.execute(
|
||||||
|
"DELETE FROM imap_sync WHERE transport_id NOT IN (SELECT transports.id FROM transports)",
|
||||||
|
(),
|
||||||
|
).await.log_err(context).ok();
|
||||||
|
|
||||||
// Delete POI locations
|
// Delete POI locations
|
||||||
// which don't have corresponding message.
|
// which don't have corresponding message.
|
||||||
delete_orphaned_poi_locations(context)
|
delete_orphaned_poi_locations(context)
|
||||||
|
|||||||
Reference in New Issue
Block a user