From 46492967a3e59b3259bb2f3b43c6a64c3beacb8f Mon Sep 17 00:00:00 2001 From: Arthur Lefebvre Date: Mon, 24 Nov 2025 13:58:31 +0100 Subject: [PATCH] add "reading" filter for books currently being read --- demodata.sql | 10 +++- front/src/BooksBrowser.vue | 6 +++ front/src/locales/en.json | 1 + front/src/locales/fr.json | 1 + internal/apitest/get_count_user_book_test.go | 19 ++++++++ .../apitest/get_reading_user_book_test.go | 44 +++++++++++++++++ internal/query/query.go | 21 ++++++++ internal/routes/userbookreadingget.go | 48 +++++++++++++++++++ internal/setup/setup.go | 6 +++ 9 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 internal/apitest/get_reading_user_book_test.go create mode 100644 internal/routes/userbookreadingget.go diff --git a/demodata.sql b/demodata.sql index 4c5f47a..738677b 100644 --- a/demodata.sql +++ b/demodata.sql @@ -32,12 +32,14 @@ INSERT INTO static_files(name, path) VALUES ('lemeurtredotsuya.jpg', 'lemeurtred INSERT INTO static_files(name, path) VALUES ('dojoji.jpg', 'dojoji.jpg'); INSERT INTO static_files(name, path) VALUES ('noisy.jpg', 'noisy.jpg'); INSERT INTO static_files(name, path) VALUES ('iliade.jpeg', 'iliade.jpeg'); +INSERT INTO static_files(name, path) VALUES ('Recherches-philosophiques.jpg', 'Recherches-philosophiques.jpg'); +INSERT INTO static_files(name, path) VALUES ('le_chateau.jpg', 'le_chateau.jpg'); -- books INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'O dingos, o chateaux!','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'odingosochateaux.jpg')); INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'O dingos, o chateaux!'), true,7); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Le petit bleu de la côte Ouest','Jean-Patrick Manchette', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'le-petit-bleu-de-la-cote-ouest.jpg')); -INSERT INTO user_books(created_at, user_id, book_id, want_read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le petit bleu de la côte Ouest'), true,7); +INSERT INTO user_books(created_at, user_id, book_id, want_read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le petit bleu de la côte Ouest'), true,0); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'D''un château l''autre','Louis-Ferdinand Céline', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'dunchateaulautre.jpg')); INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'D''un château l''autre'), true,10); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Les dieux ont soif','Anatole France', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'lesdieuxontsoif.jpg')); @@ -47,7 +49,7 @@ INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW' INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Un barrage contre le Pacifique','Marguerite Duras', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'Un_barrage_contre_le_Pacifique.jpg')); INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Un barrage contre le Pacifique'), true,7); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Salammbô','Flaubert Gustave', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'salammbo.jpg')); -INSERT INTO user_books(created_at, user_id, book_id, want_read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Salammbô'), true,8); +INSERT INTO user_books(created_at, user_id, book_id, want_read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Salammbô'), true,0); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Langage Machine','Romain Lucazeau', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'Langage Machine.jpg')); INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Langage Machine'), true,5); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'La Ville et les chiens','Mario Vargas Llosa', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'lavilleetleschiens.jpg')); @@ -91,3 +93,7 @@ INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW' INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Noisy outlaws, unfriendly blobs, and some other things that aren''t as scary, maybe, depending on how you feel about lost lands, stray cellphones, creatures from the sky, parents who disappear in Peru, a man named Lars Farf, and one other story we couldn''t quite finish, so maybe you could help us out','Wolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenhaftschaferswessenschafewarenwohlgepf', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'noisy.jpg')); INSERT INTO user_books(created_at, user_id, book_id, read, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Noisy outlaws, unfriendly blobs, and some other things that aren''t as scary, maybe, depending on how you feel about lost lands, stray cellphones, creatures from the sky, parents who disappear in Peru, a man named Lars Farf, and one other story we couldn''t quite finish, so maybe you could help us out'),true,2); INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Iliade','Homère', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'iliade.jpeg')); +INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Recherches philosophiques','Ludwig Wittgenstein', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'Recherches-philosophiques.jpg')); +INSERT INTO user_books(created_at, user_id, book_id, start_read_date, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Recherches philosophiques'), '2025-11-22 00:00:00+00:00',0); +INSERT INTO books(created_at, title, author, added_by_id, cover_id) VALUES ('NOW', 'Le château','Franz Kafka', (SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM static_files WHERE name = 'le_chateau.jpg')); +INSERT INTO user_books(created_at, user_id, book_id, start_read_date, rating) VALUES ('NOW',(SELECT id FROM users WHERE name = 'demo'),(SELECT id FROM books WHERE title = 'Le château'), '2025-10-30 00:00:00+00:00',0); diff --git a/front/src/BooksBrowser.vue b/front/src/BooksBrowser.vue index 037fa8c..beade54 100644 --- a/front/src/BooksBrowser.vue +++ b/front/src/BooksBrowser.vue @@ -9,6 +9,7 @@ import Pagination from './Pagination.vue' const FilterStates = Object.freeze({ READ: "read", WANTREAD: "wantread", + READING: "reading", }); const limit = 6; @@ -58,6 +59,11 @@ function pageChange(newPageNumber) { :class="computeDynamicClass(FilterStates.READ)"> {{$t('bookbrowser.read')}} +