types.go (1599B)
1 package readwise 2 3 import "time" 4 5 type Export struct { 6 Count int `json:"count"` 7 NextPageCursor *int `json:"nextPageCursor"` 8 Results []Result `json:"results"` 9 } 10 11 type Result struct { 12 UserBookId int `json:"use_book_id"` 13 Title string `json:"title"` 14 ReadableTitle string `json:"readable_title"` 15 CoverImageURL string `json:"cover_image_url"` 16 Author string `json:"author"` 17 UniqueURL string `json:"unique_url"` 18 BookTags []Tag `json:"book_tags"` 19 Category string `json:"category"` 20 DocumentNote string `json:"document_note"` 21 Summary string `json:"summary"` 22 ReadwiseURL string `json:"readwise_url"` 23 Source string `json:"source"` 24 SourceURL string `json:"source_url"` 25 Highlights []Highlight `json:"highlights"` 26 } 27 28 func (r Result) FirstHighlightDate() *time.Time { 29 if len(r.Highlights) == 0 { 30 return nil 31 } 32 var t time.Time 33 for _, h := range r.Highlights { 34 if h.HighlightedAt.After(t) { 35 t = h.HighlightedAt 36 } 37 } 38 return &t 39 } 40 41 type Highlight struct { 42 Text string `json:"text"` 43 ID int `json:"id"` 44 Note string `json:"note"` 45 ReadwiseURL string `json:"readwise_url"` 46 HighlightedAt time.Time `json:"highlighted_at"` 47 BookID int `json:"book_id"` 48 URL string `json:"url"` 49 Color string `json:"color"` 50 Updated time.Time `json:"updated"` 51 Tags []Tag `json:"tags"` 52 } 53 54 type Tag struct { 55 ID int `json:"id"` 56 Name string `json:"name"` 57 }