From 67c475f14c959f78564bfdfc671c9a2d8ebe1846 Mon Sep 17 00:00:00 2001 From: Arthur Lefebvre Date: Sun, 15 Mar 2026 15:57:34 +0100 Subject: [PATCH] Inventaire import: manage case where author does not exist --- internal/inventaire/inventaire_test.go | 21 +++++++++++++++++++++ internal/routes/bookpostimport.go | 15 +++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/internal/inventaire/inventaire_test.go b/internal/inventaire/inventaire_test.go index 450d240..feb9e3a 100644 --- a/internal/inventaire/inventaire_test.go +++ b/internal/inventaire/inventaire_test.go @@ -132,6 +132,27 @@ func TestCallInventaireEdition(t *testing.T) { result) } +func TestCalInventaireEditionNoAuthor(t *testing.T) { + + result, err := CallInventaireEdition(getBaseInventaireUrl(), "isbn:9782226487162", "fr") + if err != nil { + t.Error(err) + } + assert.Equal(t, + InventaireEditionDetailedSingleResult{ + Id: "isbn:9782226487162", + Title: "Les Yeux de Mona", + Author: nil, + Description: "", + ISBN: "978-2-226-48716-2", + Publisher: "éditions Albin Michel", + ReleaseDate: "2024-02-01", + Image: "https://inventaire.io/img/entities/3ca857913983d694be03dee712bb2af9e2c51747", + Lang: "fr", + }, + result) +} + func TestCallInventaireEditionFromISBN(t *testing.T) { result, err := CallInventaireFromISBN(getBaseInventaireUrl(), "9782070379248", "fr") if err != nil { diff --git a/internal/routes/bookpostimport.go b/internal/routes/bookpostimport.go index 84cb1e8..ba6ade6 100644 --- a/internal/routes/bookpostimport.go +++ b/internal/routes/bookpostimport.go @@ -40,18 +40,21 @@ func PostImportBookHandler(ac appcontext.AppContext) { } func saveInventaireBookToDb(ac appcontext.AppContext, inventaireEdition inventaire.InventaireEditionDetailedSingleResult, user *model.User) (*model.Book, error) { - author, err := fetchOrCreateInventaireAuthor(ac, inventaireEdition.Author) - if err != nil { - return nil, err - } book := model.Book{ Title: inventaireEdition.Title, SmallDescription: inventaireEdition.Description, InventaireID: inventaireEdition.Id, - Author: *author, AddedBy: *user, } + if inventaireEdition.Author != nil { + author, err := fetchOrCreateInventaireAuthor(ac, inventaireEdition.Author) + if err != nil { + return nil, err + } + book.Author = *author + } + if inventaireEdition.Image != "" { cover, err := fileutils.DownloadFile(ac, inventaireEdition.Image) if err != nil { @@ -59,7 +62,7 @@ func saveInventaireBookToDb(ac appcontext.AppContext, inventaireEdition inventai } book.Cover = cover } - err = ac.Db.Save(&book).Error + err := ac.Db.Save(&book).Error return &book, err }