mirror of
https://github.com/chatmail/core.git
synced 2026-05-06 06:46:35 +03:00
improve some typehints
This commit is contained in:
@@ -531,7 +531,7 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Chat {
|
|||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
visibility: row.try_get("archived")?,
|
visibility: row.try_get("archived")?,
|
||||||
blocked: row.try_get::<Option<_>, _>("blocked")?.unwrap_or_default(),
|
blocked: row.try_get::<Option<_>, _>("blocked")?.unwrap_or_default(),
|
||||||
is_sending_locations: row.try_get("locations_send_until")?,
|
is_sending_locations: row.try_get::<i32, _>("locations_send_until")? > 0,
|
||||||
mute_duration: row.try_get("muted_until")?,
|
mute_duration: row.try_get("muted_until")?,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2082,6 +2082,7 @@ pub async fn get_gossiped_timestamp(context: &Context, chat_id: ChatId) -> i64 {
|
|||||||
paramsx![chat_id],
|
paramsx![chat_id],
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
.map(|v: i32| v as i64)
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
//! Contacts module
|
//! Contacts module
|
||||||
|
|
||||||
#![forbid(clippy::indexing_slicing)]
|
#![forbid(clippy::indexing_slicing)]
|
||||||
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
use async_std::path::PathBuf;
|
use async_std::path::PathBuf;
|
||||||
use async_std::prelude::*;
|
use async_std::prelude::*;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
use sqlx::Row;
|
||||||
|
|
||||||
use crate::aheader::EncryptPreference;
|
use crate::aheader::EncryptPreference;
|
||||||
use crate::chat::ChatId;
|
use crate::chat::ChatId;
|
||||||
@@ -135,10 +137,9 @@ impl Default for Origin {
|
|||||||
}
|
}
|
||||||
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Contact {
|
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Contact {
|
||||||
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
|
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
|
||||||
use sqlx::Row;
|
|
||||||
|
|
||||||
let contact = Self {
|
let contact = Self {
|
||||||
id: row.try_get::<i64, _>("id")? as u32,
|
id: u32::try_from(row.try_get::<i32, _>("id")?)
|
||||||
|
.map_err(|err| sqlx::Error::Decode(err.into()))?,
|
||||||
name: row
|
name: row
|
||||||
.try_get::<Option<String>, _>("name")?
|
.try_get::<Option<String>, _>("name")?
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
@@ -674,7 +675,7 @@ SELECT c.id FROM contacts c
|
|||||||
.await
|
.await
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|id: i64| id as u32)
|
.map(|id: i32| id as u32)
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
src/job.rs
10
src/job.rs
@@ -148,7 +148,7 @@ impl fmt::Display for Job {
|
|||||||
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Job {
|
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Job {
|
||||||
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
|
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
|
||||||
use sqlx::Row;
|
use sqlx::Row;
|
||||||
let foreign_id: i64 = row.try_get("foreign_id")?;
|
let foreign_id: i32 = row.try_get("foreign_id")?;
|
||||||
if foreign_id < 0 {
|
if foreign_id < 0 {
|
||||||
return Err(sqlx::Error::Decode(
|
return Err(sqlx::Error::Decode(
|
||||||
anyhow::anyhow!("invalid foreign_id").into(),
|
anyhow::anyhow!("invalid foreign_id").into(),
|
||||||
@@ -156,12 +156,12 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Job {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Ok(Job {
|
Ok(Job {
|
||||||
job_id: row.try_get::<i64, _>("id")? as u32,
|
job_id: row.try_get::<i32, _>("id")? as u32,
|
||||||
action: row.try_get("action")?,
|
action: row.try_get("action")?,
|
||||||
foreign_id: foreign_id as u32,
|
foreign_id: foreign_id as u32,
|
||||||
desired_timestamp: row.try_get("desired_timestamp")?,
|
desired_timestamp: row.try_get_unchecked("desired_timestamp")?,
|
||||||
added_timestamp: row.try_get("added_timestamp")?,
|
added_timestamp: row.try_get_unchecked("added_timestamp")?,
|
||||||
tries: row.try_get::<i64, _>("tries")? as u32,
|
tries: row.try_get::<i32, _>("tries")? as u32,
|
||||||
param: row
|
param: row
|
||||||
.try_get::<String, _>("param")?
|
.try_get::<String, _>("param")?
|
||||||
.parse()
|
.parse()
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Message {
|
|||||||
let id = row.try_get("id")?;
|
let id = row.try_get("id")?;
|
||||||
|
|
||||||
let text;
|
let text;
|
||||||
if let Some(buf) = row.try_get::<Option<&[u8]>, _>("txt")? {
|
if let Some(buf) = row.try_get_unchecked::<Option<&[u8]>, _>("txt")? {
|
||||||
if let Ok(t) = String::from_utf8(buf.to_vec()) {
|
if let Ok(t) = String::from_utf8(buf.to_vec()) {
|
||||||
text = t;
|
text = t;
|
||||||
} else {
|
} else {
|
||||||
@@ -257,13 +257,13 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Message {
|
|||||||
rfc724_mid: row.try_get::<String, _>("rfc724mid")?,
|
rfc724_mid: row.try_get::<String, _>("rfc724mid")?,
|
||||||
in_reply_to: row.try_get::<Option<String>, _>("mime_in_reply_to")?,
|
in_reply_to: row.try_get::<Option<String>, _>("mime_in_reply_to")?,
|
||||||
server_folder: row.try_get::<Option<String>, _>("server_folder")?,
|
server_folder: row.try_get::<Option<String>, _>("server_folder")?,
|
||||||
server_uid: row.try_get::<i64, _>("server_uid")? as u32,
|
server_uid: row.try_get_unchecked::<i64, _>("server_uid")? as u32,
|
||||||
chat_id: row.try_get("chat_id")?,
|
chat_id: row.try_get("chat_id")?,
|
||||||
from_id: row.try_get::<i64, _>("from_id")? as u32,
|
from_id: row.try_get::<i32, _>("from_id")? as u32,
|
||||||
to_id: row.try_get::<i64, _>("to_id")? as u32,
|
to_id: row.try_get::<i32, _>("to_id")? as u32,
|
||||||
timestamp_sort: row.try_get("timestamp")?,
|
timestamp_sort: row.try_get_unchecked("timestamp")?,
|
||||||
timestamp_sent: row.try_get("timestamp_sent")?,
|
timestamp_sent: row.try_get_unchecked("timestamp_sent")?,
|
||||||
timestamp_rcvd: row.try_get("timestamp_rcvd")?,
|
timestamp_rcvd: row.try_get_unchecked("timestamp_rcvd")?,
|
||||||
viewtype: row.try_get("type")?,
|
viewtype: row.try_get("type")?,
|
||||||
state: row.try_get("state")?,
|
state: row.try_get("state")?,
|
||||||
is_dc_message: row.try_get("msgrmsg")?,
|
is_dc_message: row.try_get("msgrmsg")?,
|
||||||
@@ -272,9 +272,9 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Message {
|
|||||||
.try_get::<String, _>("param")?
|
.try_get::<String, _>("param")?
|
||||||
.parse()
|
.parse()
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
starred: row.try_get("starred")?,
|
starred: row.try_get::<i32, _>("starred")? > 0,
|
||||||
hidden: row.try_get("hidden")?,
|
hidden: row.try_get::<i32, _>("hidden")? > 0,
|
||||||
location_id: row.try_get::<i64, _>("location")? as u32,
|
location_id: row.try_get_unchecked::<i64, _>("location")? as u32,
|
||||||
chat_blocked: row
|
chat_blocked: row
|
||||||
.try_get::<Option<Blocked>, _>("blocked")?
|
.try_get::<Option<Blocked>, _>("blocked")?
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
@@ -864,9 +864,9 @@ pub async fn get_msg_info(context: &Context, msg_id: MsgId) -> Result<String, Er
|
|||||||
.fetch(&pool);
|
.fetch(&pool);
|
||||||
|
|
||||||
while let Some(row) = rows.next().await {
|
while let Some(row) = rows.next().await {
|
||||||
let (contact_id, ts): (i32, i64) = row?;
|
let (contact_id, ts): (i32, i32) = row?;
|
||||||
|
|
||||||
let fts = dc_timestamp_to_str(ts);
|
let fts = dc_timestamp_to_str(ts as i64);
|
||||||
ret += &format!("Read: {}", fts);
|
ret += &format!("Read: {}", fts);
|
||||||
|
|
||||||
let name = Contact::load_from_db(context, contact_id as u32)
|
let name = Contact::load_from_db(context, contact_id as u32)
|
||||||
|
|||||||
@@ -47,10 +47,10 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Peerstate {
|
|||||||
|
|
||||||
let mut res = Self::new(row.try_get("addr")?);
|
let mut res = Self::new(row.try_get("addr")?);
|
||||||
|
|
||||||
res.last_seen = row.try_get("last_seen")?;
|
res.last_seen = row.try_get_unchecked("last_seen")?;
|
||||||
res.last_seen_autocrypt = row.try_get("last_seen_autocrypt")?;
|
res.last_seen_autocrypt = row.try_get_unchecked("last_seen_autocrypt")?;
|
||||||
res.prefer_encrypt = row.try_get("prefer_encrypted")?;
|
res.prefer_encrypt = row.try_get("prefer_encrypted")?;
|
||||||
res.gossip_timestamp = row.try_get("gossip_timestamp")?;
|
res.gossip_timestamp = row.try_get_unchecked("gossip_timestamp")?;
|
||||||
|
|
||||||
res.public_key_fingerprint = row
|
res.public_key_fingerprint = row
|
||||||
.try_get::<Option<String>, _>("public_key_fingerprint")?
|
.try_get::<Option<String>, _>("public_key_fingerprint")?
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ impl Sql {
|
|||||||
field.as_ref(),
|
field.as_ref(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let res: i64 = self.query_value(&query, paramsx![value.as_ref()]).await?;
|
let res: i32 = self.query_value(&query, paramsx![value.as_ref()]).await?;
|
||||||
|
|
||||||
Ok(res as u32)
|
Ok(res as u32)
|
||||||
}
|
}
|
||||||
@@ -395,7 +395,7 @@ impl Sql {
|
|||||||
field2.as_ref(),
|
field2.as_ref(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let res: i64 = self
|
let res: i32 = self
|
||||||
.query_value(query.as_ref(), paramsx![value, value2])
|
.query_value(query.as_ref(), paramsx![value, value2])
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user