improve some typehints

This commit is contained in:
dignifiedquire
2020-06-24 11:54:43 +02:00
parent 2d5caf9d3e
commit 5c13d2322a
6 changed files with 29 additions and 27 deletions

View File

@@ -531,7 +531,7 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Chat {
.unwrap_or_default(),
visibility: row.try_get("archived")?,
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")?,
};
@@ -2082,6 +2082,7 @@ pub async fn get_gossiped_timestamp(context: &Context, chat_id: ChatId) -> i64 {
paramsx![chat_id],
)
.await
.map(|v: i32| v as i64)
.unwrap_or_default()
}

View File

@@ -1,12 +1,14 @@
//! Contacts module
#![forbid(clippy::indexing_slicing)]
use std::convert::TryFrom;
use async_std::path::PathBuf;
use async_std::prelude::*;
use itertools::Itertools;
use lazy_static::lazy_static;
use regex::Regex;
use sqlx::Row;
use crate::aheader::EncryptPreference;
use crate::chat::ChatId;
@@ -135,10 +137,9 @@ impl Default for Origin {
}
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Contact {
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
use sqlx::Row;
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
.try_get::<Option<String>, _>("name")?
.unwrap_or_default(),
@@ -674,7 +675,7 @@ SELECT c.id FROM contacts c
.await
.unwrap_or_default()
.into_iter()
.map(|id: i64| id as u32)
.map(|id: i32| id as u32)
.collect()
}

View File

@@ -148,7 +148,7 @@ impl fmt::Display for Job {
impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Job {
fn from_row(row: &sqlx::sqlite::SqliteRow) -> Result<Self, sqlx::Error> {
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 {
return Err(sqlx::Error::Decode(
anyhow::anyhow!("invalid foreign_id").into(),
@@ -156,12 +156,12 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for 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")?,
foreign_id: foreign_id as u32,
desired_timestamp: row.try_get("desired_timestamp")?,
added_timestamp: row.try_get("added_timestamp")?,
tries: row.try_get::<i64, _>("tries")? as u32,
desired_timestamp: row.try_get_unchecked("desired_timestamp")?,
added_timestamp: row.try_get_unchecked("added_timestamp")?,
tries: row.try_get::<i32, _>("tries")? as u32,
param: row
.try_get::<String, _>("param")?
.parse()

View File

@@ -238,7 +238,7 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Message {
let id = row.try_get("id")?;
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()) {
text = t;
} else {
@@ -257,13 +257,13 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Message {
rfc724_mid: row.try_get::<String, _>("rfc724mid")?,
in_reply_to: row.try_get::<Option<String>, _>("mime_in_reply_to")?,
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")?,
from_id: row.try_get::<i64, _>("from_id")? as u32,
to_id: row.try_get::<i64, _>("to_id")? as u32,
timestamp_sort: row.try_get("timestamp")?,
timestamp_sent: row.try_get("timestamp_sent")?,
timestamp_rcvd: row.try_get("timestamp_rcvd")?,
from_id: row.try_get::<i32, _>("from_id")? as u32,
to_id: row.try_get::<i32, _>("to_id")? as u32,
timestamp_sort: row.try_get_unchecked("timestamp")?,
timestamp_sent: row.try_get_unchecked("timestamp_sent")?,
timestamp_rcvd: row.try_get_unchecked("timestamp_rcvd")?,
viewtype: row.try_get("type")?,
state: row.try_get("state")?,
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")?
.parse()
.unwrap_or_default(),
starred: row.try_get("starred")?,
hidden: row.try_get("hidden")?,
location_id: row.try_get::<i64, _>("location")? as u32,
starred: row.try_get::<i32, _>("starred")? > 0,
hidden: row.try_get::<i32, _>("hidden")? > 0,
location_id: row.try_get_unchecked::<i64, _>("location")? as u32,
chat_blocked: row
.try_get::<Option<Blocked>, _>("blocked")?
.unwrap_or_default(),
@@ -864,9 +864,9 @@ pub async fn get_msg_info(context: &Context, msg_id: MsgId) -> Result<String, Er
.fetch(&pool);
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);
let name = Contact::load_from_db(context, contact_id as u32)

View File

@@ -47,10 +47,10 @@ impl<'a> sqlx::FromRow<'a, sqlx::sqlite::SqliteRow> for Peerstate {
let mut res = Self::new(row.try_get("addr")?);
res.last_seen = row.try_get("last_seen")?;
res.last_seen_autocrypt = row.try_get("last_seen_autocrypt")?;
res.last_seen = row.try_get_unchecked("last_seen")?;
res.last_seen_autocrypt = row.try_get_unchecked("last_seen_autocrypt")?;
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
.try_get::<Option<String>, _>("public_key_fingerprint")?

View File

@@ -375,7 +375,7 @@ impl Sql {
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)
}
@@ -395,7 +395,7 @@ impl Sql {
field2.as_ref(),
);
let res: i64 = self
let res: i32 = self
.query_value(query.as_ref(), paramsx![value, value2])
.await?;