add sql.query_map

This commit is contained in:
dignifiedquire
2019-07-06 14:47:16 +02:00
parent d3e521ded0
commit 8790a2dc52
2 changed files with 36 additions and 24 deletions

View File

@@ -670,38 +670,29 @@ pub unsafe fn dc_get_version_str() -> *mut libc::c_char {
pub fn dc_get_fresh_msgs(context: &Context) -> *mut dc_array_t {
let show_deaddrop = 0;
let ret = unsafe { dc_array_new(128 as size_t) };
if ret.is_null() {
return ret;
}
let conn_lock = context.sql.get_conn();
if let Some(ref mut stmt) = conn_lock.as_ref().and_then(|conn| {
conn.prepare(
context
.sql
.query_map(
"SELECT m.id FROM msgs m LEFT JOIN contacts ct \
ON m.from_id=ct.id LEFT JOIN chats c ON m.chat_id=c.id WHERE m.state=? \
AND m.hidden=0 \
AND m.chat_id>? \
AND ct.blocked=0 \
AND (c.blocked=0 OR c.blocked=?) ORDER BY m.timestamp DESC,m.id DESC;",
)
.ok()
}) {
match stmt.query_map(&[10, 9, if 0 != show_deaddrop { 2 } else { 0 }], |row| {
row.get(0)
}) {
Ok(rows) => {
for row in rows {
if let Ok(id) = row {
unsafe { dc_array_add_id(ret, id) };
}
}
}
Err(_err) => {}
}
}
&[10, 9, if 0 != show_deaddrop { 2 } else { 0 }],
|row| row.get(0),
|rows| {
let ret = unsafe { dc_array_new(128 as size_t) };
ret
for row in rows {
let id = row?;
unsafe { dc_array_add_id(ret, id) };
}
Ok(ret)
},
)
.unwrap()
}
pub fn dc_search_msgs(