]> git.lizzy.rs Git - go-anidb.git/blob - mylistanime.go
Modernize
[go-anidb.git] / mylistanime.go
1 package anidb
2
3 import (
4         "encoding/json"
5         "github.com/EliasFleckenstein03/go-anidb/misc"
6         "strconv"
7         "time"
8 )
9
10 type MyListAnime struct {
11         AID AID
12
13         EpisodesWithState MyListStateMap
14
15         WatchedEpisodes misc.EpisodeList
16
17         EpisodesPerGroup GroupEpisodes
18
19         Cached time.Time
20 }
21
22 type GroupEpisodes map[GID]misc.EpisodeList
23
24 func (ge GroupEpisodes) MarshalJSON() ([]byte, error) {
25         generic := make(map[string]misc.EpisodeList, len(ge))
26         for k, v := range ge {
27                 generic[strconv.Itoa(int(k))] = v
28         }
29         return json.Marshal(generic)
30 }
31
32 func (ge GroupEpisodes) UnmarshalJSON(b []byte) error {
33         var generic map[string]misc.EpisodeList
34         if err := json.Unmarshal(b, &generic); err != nil {
35                 return err
36         }
37         for k, v := range generic {
38                 ik, err := strconv.ParseInt(k, 10, 32)
39                 if err != nil {
40                         return err
41                 }
42
43                 ge[GID(ik)] = v
44         }
45
46         return nil
47 }
48
49 type MyListStateMap map[MyListState]misc.EpisodeList
50
51 func (sm MyListStateMap) MarshalJSON() ([]byte, error) {
52         generic := make(map[string]misc.EpisodeList, len(sm))
53         for k, v := range sm {
54                 generic[strconv.Itoa(int(k))] = v
55         }
56         return json.Marshal(generic)
57 }
58
59 func (sm MyListStateMap) UnmarshalJSON(b []byte) error {
60         var generic map[string]misc.EpisodeList
61         if err := json.Unmarshal(b, &generic); err != nil {
62                 return err
63         }
64         for k, v := range generic {
65                 ik, err := strconv.ParseInt(k, 10, 32)
66                 if err != nil {
67                         return err
68                 }
69
70                 sm[MyListState(ik)] = v
71         }
72
73         return nil
74 }