Files
bibliomane/internal/inventaire/inventaireeditionfromid.go

63 lines
1.7 KiB
Go

package inventaire
import (
"fmt"
)
type InventaireEditionDetailedSingleResult struct {
Id string
Title string
Description string
Author *InventaireAuthorResult
ISBN string
Publisher string
ReleaseDate string
Image string
Lang string
}
func CallInventaireEdition(inventaireId string, lang string) (InventaireEditionDetailedSingleResult, error) {
var result InventaireEditionDetailedSingleResult
editionQueryResults, err := callInventaireEditionEntities([]string{inventaireId})
if err != nil {
return result, err
}
var editionQueryResult inventaireEditionQueryEntity
if len(editionQueryResults.Entities) < 1 {
return result, fmt.Errorf("No edition found on inventaire for id %s", inventaireId)
}
editionQueryResult = editionQueryResults.Entities[0]
var publisher string
if editionQueryResult.EditionId != "" {
publisher, err = callInventairePublisherGetName(editionQueryResult.EditionId, lang)
if err != nil {
return result, err
}
}
var author *InventaireAuthorResult
var description string
if editionQueryResult.WorkId != "" {
workQueryResult, err := callInventaireBook(editionQueryResult.WorkId, lang)
if err != nil {
return result, err
}
author = workQueryResult.Author
description = workQueryResult.Description
}
result = InventaireEditionDetailedSingleResult{
Id: editionQueryResult.Uri,
Title: editionQueryResult.Title,
Author: author,
Description: description,
ISBN: editionQueryResult.ISBN,
Publisher: publisher,
ReleaseDate: editionQueryResult.ReleaseDate,
Image: editionQueryResult.Image,
Lang: editionQueryResult.Lang,
}
return result, err
}