From bdd7ebf5b89662a24d60d39e517c85f2e93bdef7 Mon Sep 17 00:00:00 2001 From: seb Date: Thu, 15 Oct 2026 00:23:55 +0200 Subject: [PATCH] u --- src/api/routes/quote.js | 2 ++ src/db/quote.js | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/api/routes/quote.js b/src/api/routes/quote.js index ad9036c..7382804 100644 --- a/src/api/routes/quote.js +++ b/src/api/routes/quote.js @@ -27,6 +27,8 @@ function quoteErrorStatus(error) { if (error.message === 'File name required') return 400; if (error.message === 'Mimetype required') return 400; if (error.message === 'Content required') return 400; + if (error.message === 'Invalid attachment order') return 400; + if (error.message?.includes('Invalid target id')) return 400; if (error.message?.includes('parent article') || error.message?.includes('A parent article')) return 400; return 500; } diff --git a/src/db/quote.js b/src/db/quote.js index d7b3e6a..f07bb12 100644 --- a/src/db/quote.js +++ b/src/db/quote.js @@ -46,12 +46,18 @@ export async function list(googleAuthId, opts) { const store = await getStore(); const result = await store.quote.list(googleAuthId, opts); if (Array.isArray(result)) { - return result.map((q) => enrichQuote(q)); + const filesList = await Promise.all( + result.map((q) => store.manifestattachment.listByManifestId(googleAuthId, q.id).catch(() => [])) + ); + return result.map((q, i) => enrichQuote(q, filesList[i])); } if (result && Array.isArray(result.quotes)) { + const filesList = await Promise.all( + result.quotes.map((q) => store.manifestattachment.listByManifestId(googleAuthId, q.id).catch(() => [])) + ); return { ...result, - quotes: result.quotes.map((q) => enrichQuote(q)), + quotes: result.quotes.map((q, i) => enrichQuote(q, filesList[i])), }; } return result; @@ -69,13 +75,16 @@ export async function getById(googleAuthId, id) { export async function create(googleAuthId, data) { const store = await getStore(); const quote = await store.quote.create(googleAuthId, data); - return enrichQuote(quote); + return enrichQuote(quote, []); } export async function update(googleAuthId, id, data) { const store = await getStore(); - const quote = await store.quote.update(googleAuthId, id, data); - return enrichQuote(quote); + const [quote, files] = await Promise.all([ + store.quote.update(googleAuthId, id, data), + store.manifestattachment.listByManifestId(googleAuthId, id).catch(() => []), + ]); + return enrichQuote(quote, files); } export async function remove(googleAuthId, id) {