123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package internal
- import (
- "encoding/json"
- "errors"
- "fmt"
- )
- type SyncStatus uint8
- const (
- None SyncStatus = iota
- Failed
- Success
- Syncing
- PreSyncing
- Paused
- Disabled
- )
- func (s SyncStatus) String() string {
- switch s {
- case None:
- return "none"
- case Failed:
- return "failed"
- case Success:
- return "success"
- case Syncing:
- return "syncing"
- case PreSyncing:
- return "pre-syncing"
- case Paused:
- return "paused"
- case Disabled:
- return "disabled"
- default:
- return ""
- }
- }
- func (s SyncStatus) MarshalJSON() ([]byte, error) {
- strStatus := s.String()
- if strStatus == "" {
- return []byte{}, errors.New("Invalid status value")
- }
- return json.Marshal(strStatus)
- }
- func (s *SyncStatus) UnmarshalJSON(v []byte) error {
- sv := string(v)
- switch sv {
- case `"none"`:
- *s = None
- case `"failed"`:
- *s = Failed
- case `"success"`:
- *s = Success
- case `"syncing"`:
- *s = Syncing
- case `"pre-syncing"`:
- *s = PreSyncing
- case `"paused"`:
- *s = Paused
- case `"disabled"`:
- *s = Disabled
- default:
- return fmt.Errorf("Invalid status value: %s", string(v))
- }
- return nil
- }
|