mirror of
https://github.com/chatmail/core.git
synced 2026-05-13 11:56:30 +03:00
sql: switch from sqlx to rusqlite
This commit is contained in:
64
src/imap.rs
64
src/imap.rs
@@ -521,29 +521,21 @@ impl Imap {
|
||||
// Write collected UIDs to SQLite database.
|
||||
context
|
||||
.sql
|
||||
.transaction(|conn| {
|
||||
Box::pin(async move {
|
||||
sqlx::query("UPDATE msgs SET server_uid=0 WHERE server_folder=?")
|
||||
.bind(&folder)
|
||||
.execute(&mut *conn)
|
||||
.await?;
|
||||
|
||||
for (uid, rfc724_mid) in &msg_ids {
|
||||
// This may detect previously undetected moved
|
||||
// messages, so we update server_folder too.
|
||||
sqlx::query(
|
||||
"UPDATE msgs \
|
||||
.transaction(move |transaction| {
|
||||
transaction.execute(
|
||||
"UPDATE msgs SET server_uid=0 WHERE server_folder=?",
|
||||
params![folder],
|
||||
)?;
|
||||
for (uid, rfc724_mid) in &msg_ids {
|
||||
// This may detect previously undetected moved
|
||||
// messages, so we update server_folder too.
|
||||
transaction.execute(
|
||||
"UPDATE msgs \
|
||||
SET server_folder=?,server_uid=? WHERE rfc724_mid=?",
|
||||
)
|
||||
.bind(&folder)
|
||||
.bind(uid)
|
||||
.bind(rfc724_mid)
|
||||
.execute(&mut *conn)
|
||||
.await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})
|
||||
params![folder, uid, rfc724_mid],
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
.await?;
|
||||
Ok(())
|
||||
@@ -1732,15 +1724,9 @@ pub(crate) async fn set_uid_next(context: &Context, folder: &str, uid_next: u32)
|
||||
context
|
||||
.sql
|
||||
.execute(
|
||||
sqlx::query(
|
||||
"INSERT INTO imap_sync (folder, uidvalidity, uid_next) VALUES (?,?,?)
|
||||
"INSERT INTO imap_sync (folder, uidvalidity, uid_next) VALUES (?,?,?)
|
||||
ON CONFLICT(folder) DO UPDATE SET uid_next=? WHERE folder=?;",
|
||||
)
|
||||
.bind(folder)
|
||||
.bind(0i32)
|
||||
.bind(uid_next as i64)
|
||||
.bind(uid_next as i64)
|
||||
.bind(folder),
|
||||
paramsv![folder, 0u32, uid_next, uid_next, folder],
|
||||
)
|
||||
.await?;
|
||||
Ok(())
|
||||
@@ -1754,7 +1740,10 @@ pub(crate) async fn set_uid_next(context: &Context, folder: &str, uid_next: u32)
|
||||
async fn get_uid_next(context: &Context, folder: &str) -> Result<u32> {
|
||||
Ok(context
|
||||
.sql
|
||||
.query_get_value(sqlx::query("SELECT uid_next FROM imap_sync WHERE folder=?;").bind(folder))
|
||||
.query_get_value(
|
||||
"SELECT uid_next FROM imap_sync WHERE folder=?;",
|
||||
paramsv![folder],
|
||||
)
|
||||
.await?
|
||||
.unwrap_or(0))
|
||||
}
|
||||
@@ -1767,15 +1756,9 @@ pub(crate) async fn set_uidvalidity(
|
||||
context
|
||||
.sql
|
||||
.execute(
|
||||
sqlx::query(
|
||||
"INSERT INTO imap_sync (folder, uidvalidity, uid_next) VALUES (?,?,?)
|
||||
"INSERT INTO imap_sync (folder, uidvalidity, uid_next) VALUES (?,?,?)
|
||||
ON CONFLICT(folder) DO UPDATE SET uidvalidity=? WHERE folder=?;",
|
||||
)
|
||||
.bind(folder)
|
||||
.bind(uidvalidity as i32)
|
||||
.bind(0i32)
|
||||
.bind(uidvalidity as i32)
|
||||
.bind(folder),
|
||||
paramsv![folder, uidvalidity, 0u32, uidvalidity, folder],
|
||||
)
|
||||
.await?;
|
||||
Ok(())
|
||||
@@ -1785,7 +1768,8 @@ async fn get_uidvalidity(context: &Context, folder: &str) -> Result<u32> {
|
||||
Ok(context
|
||||
.sql
|
||||
.query_get_value(
|
||||
sqlx::query("SELECT uidvalidity FROM imap_sync WHERE folder=?;").bind(folder),
|
||||
"SELECT uidvalidity FROM imap_sync WHERE folder=?;",
|
||||
paramsv![folder],
|
||||
)
|
||||
.await?
|
||||
.unwrap_or(0))
|
||||
|
||||
Reference in New Issue
Block a user