diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/commands.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/commands.c b/src/commands.c index 500c9a3..f03e0e4 100644 --- a/src/commands.c +++ b/src/commands.c @@ -3484,12 +3484,15 @@ static yyjson_mut_val *h_attachment_list(struct req *r) r->db, "SELECT a.id,a.filename,a.mime,a.size_bytes,a.created_at,a.sha256," "(SELECT va.voucher_id FROM voucher_attachments va" - " WHERE va.org_id=a.org_id AND va.attachment_id=a.id LIMIT 1)" + " WHERE va.org_id=a.org_id AND va.attachment_id=a.id" + " AND (?2=0 OR va.voucher_id=?2)" + " ORDER BY va.voucher_id LIMIT 1)" " FROM attachments a WHERE a.org_id=?1" - " AND (?2=0 OR (SELECT va.voucher_id FROM voucher_attachments va" - " WHERE va.org_id=a.org_id AND va.attachment_id=a.id LIMIT 1)=?2)" - " AND (?3=0 OR NOT EXISTS(SELECT 1 FROM voucher_attachments va2" - " WHERE va2.org_id=a.org_id AND va2.attachment_id=a.id))" + " AND (?2=0 OR EXISTS(SELECT 1 FROM voucher_attachments va2" + " WHERE va2.org_id=a.org_id AND va2.attachment_id=a.id" + " AND va2.voucher_id=?2))" + " AND (?3=0 OR NOT EXISTS(SELECT 1 FROM voucher_attachments va3" + " WHERE va3.org_id=a.org_id AND va3.attachment_id=a.id))" " AND a.id>?4 ORDER BY a.id LIMIT ?5", -1, &st, NULL) != SQLITE_OK) return fail(r, "INTERNAL", "database error"); |
