aboutsummaryrefslogtreecommitdiffstats
path: root/skate/schema.go
diff options
context:
space:
mode:
Diffstat (limited to 'skate/schema.go')
-rw-r--r--skate/schema.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/skate/schema.go b/skate/schema.go
index 83ceea3..ad28389 100644
--- a/skate/schema.go
+++ b/skate/schema.go
@@ -88,6 +88,8 @@ type Release struct {
Core string `json:"core,omitempty"`
WikidataQID string `json:"wikidata_qid,omitempty"`
Jstor string `json:"jstor,omitempty"`
+ ISBN10 string `json:"isbn10,omitempty"`
+ ISBN13 string `json:"isbn13,omitempty"`
} `json:"ext_ids,omitempty"`
Ident string `json:"ident,omitempty"`
Publisher string `json:"publisher,omitempty"`
@@ -314,3 +316,54 @@ func (c *MinimalCitations) ParseIDList() (result IDList) {
}
return result
}
+
+// OpenLibraryWork from data dump (solr).
+type OpenLibraryWork struct {
+ AuthorFacet []string `json:"author_facet"`
+ AuthorKey []string `json:"author_key"`
+ AuthorName []string `json:"author_name"`
+ CoverEditionKey string `json:"cover_edition_key"`
+ CoverI int64 `json:"cover_i"`
+ EbookCountI int64 `json:"ebook_count_i"`
+ EditionCount int64 `json:"edition_count"`
+ EditionKey []string `json:"edition_key"`
+ FirstPublishYear int64 `json:"first_publish_year"`
+ HasFulltext bool `json:"has_fulltext"`
+ IdGoodreads []string `json:"id_goodreads"`
+ IdLibrarything []string `json:"id_librarything"`
+ Isbn []string `json:"isbn"`
+ Key string `json:"key"`
+ Language []string `json:"language"`
+ LastModifiedI int64 `json:"last_modified_i"`
+ PublishDate []string `json:"publish_date"`
+ PublishYear []int64 `json:"publish_year"`
+ Publisher []string `json:"publisher"`
+ PublisherFacet []string `json:"publisher_facet"`
+ Seed []string `json:"seed"`
+ Text []string `json:"text"`
+ Title string `json:"title"`
+ TitleSuggest []string `json:"title_suggest"`
+ Type string `json:"type"`
+ Version int64 `json:"_version_"`
+}
+
+// OpenLibraryToRelease convert OL data into a release. XXX: release/work?
+func OpenLibraryToRelease(w *OpenLibraryWork) (*Release, error) {
+ var (
+ release Release
+ contribs = make([]struct {
+ Index int `json:"index,omitempty"`
+ RawName string `json:"raw_name,omitempty"`
+ Role string `json:"role,omitempty"`
+ }, len(w.AuthorName))
+ )
+ for i, author := range w.AuthorName {
+ contribs[i].RawName = author
+ }
+ release.Title = w.Title
+ if len(w.PublishYear) > 0 {
+ release.ReleaseYearValue = w.FirstPublishYear
+ }
+ // XXX: isbn normalization
+ return nil, nil
+}