remove boilderplate from sql-statements, see #852

This commit is contained in:
B. Petersen
2019-11-28 19:29:44 +01:00
parent 430d4e5f6e
commit 7484fb6120

View File

@@ -119,22 +119,20 @@ impl Chatlist {
let mut ids = if let Some(query_contact_id) = query_contact_id { let mut ids = if let Some(query_contact_id) = query_contact_id {
// show chats shared with a given contact // show chats shared with a given contact
context.sql.query_map( context.sql.query_map(
concat!( "SELECT c.id, m.id
"SELECT c.id, m.id", FROM chats c
" FROM chats c", LEFT JOIN msgs m
" LEFT JOIN msgs m", ON c.id=m.chat_id
" ON c.id=m.chat_id", AND m.timestamp=(
" AND m.timestamp=(", SELECT MAX(timestamp)
" SELECT MAX(timestamp)", FROM msgs
" FROM msgs", WHERE chat_id=c.id
" WHERE chat_id=c.id", AND hidden=0)
" AND hidden=0)", WHERE c.id>9
" WHERE c.id>9", AND c.blocked=0
" AND c.blocked=0", AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?)
" AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?)", GROUP BY c.id
" GROUP BY c.id", ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;",
" ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;"
),
params![query_contact_id as i32], params![query_contact_id as i32],
process_row, process_row,
process_rows, process_rows,
@@ -142,22 +140,20 @@ impl Chatlist {
} else if 0 != listflags & DC_GCL_ARCHIVED_ONLY { } else if 0 != listflags & DC_GCL_ARCHIVED_ONLY {
// show archived chats // show archived chats
context.sql.query_map( context.sql.query_map(
concat!( "SELECT c.id, m.id
"SELECT c.id, m.id", FROM chats c
" FROM chats c", LEFT JOIN msgs m
" LEFT JOIN msgs m", ON c.id=m.chat_id
" ON c.id=m.chat_id", AND m.timestamp=(
" AND m.timestamp=(", SELECT MAX(timestamp)
" SELECT MAX(timestamp)", FROM msgs
" FROM msgs", WHERE chat_id=c.id
" WHERE chat_id=c.id", AND hidden=0)
" AND hidden=0)", WHERE c.id>9
" WHERE c.id>9", AND c.blocked=0
" AND c.blocked=0", AND c.archived=1
" AND c.archived=1", GROUP BY c.id
" GROUP BY c.id", ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;",
" ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;"
),
params![], params![],
process_row, process_row,
process_rows, process_rows,
@@ -168,22 +164,20 @@ impl Chatlist {
let str_like_cmd = format!("%{}%", query); let str_like_cmd = format!("%{}%", query);
context.sql.query_map( context.sql.query_map(
concat!( "SELECT c.id, m.id
"SELECT c.id, m.id", FROM chats c
" FROM chats c", LEFT JOIN msgs m
" LEFT JOIN msgs m", ON c.id=m.chat_id
" ON c.id=m.chat_id", AND m.timestamp=(
" AND m.timestamp=(", SELECT MAX(timestamp)
" SELECT MAX(timestamp)", FROM msgs
" FROM msgs", WHERE chat_id=c.id
" WHERE chat_id=c.id", AND hidden=0)
" AND hidden=0)", WHERE c.id>9
" WHERE c.id>9", AND c.blocked=0
" AND c.blocked=0", AND c.name LIKE ?
" AND c.name LIKE ?", GROUP BY c.id
" GROUP BY c.id", ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;",
" ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;"
),
params![str_like_cmd], params![str_like_cmd],
process_row, process_row,
process_rows, process_rows,
@@ -191,22 +185,20 @@ impl Chatlist {
} else { } else {
// show normal chatlist // show normal chatlist
let mut ids = context.sql.query_map( let mut ids = context.sql.query_map(
concat!( "SELECT c.id, m.id
"SELECT c.id, m.id", FROM chats c
" FROM chats c", LEFT JOIN msgs m
" LEFT JOIN msgs m", ON c.id=m.chat_id
" ON c.id=m.chat_id", AND m.timestamp=(
" AND m.timestamp=(", SELECT MAX(timestamp)
" SELECT MAX(timestamp)", FROM msgs
" FROM msgs", WHERE chat_id=c.id
" WHERE chat_id=c.id", AND hidden=0)
" AND hidden=0)", WHERE c.id>9
" WHERE c.id>9", AND c.blocked=0
" AND c.blocked=0", AND c.archived=0
" AND c.archived=0", GROUP BY c.id
" GROUP BY c.id", ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;",
" ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;"
),
params![], params![],
process_row, process_row,
process_rows, process_rows,