db.go 729B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package main
  2. import (
  3. "encoding/json"
  4. "io"
  5. "io/ioutil"
  6. "os"
  7. )
  8. type SongsFile struct {
  9. Songs []*SongEntry
  10. }
  11. type SongEntry struct {
  12. Week int
  13. Title string
  14. Artist string
  15. URL string
  16. Sync bool
  17. }
  18. func loadDb() (SongsFile, error) {
  19. var v SongsFile
  20. f, err := os.Open("songs.json")
  21. if err != nil {
  22. return v, err
  23. }
  24. defer f.Close()
  25. if err != nil {
  26. return v, err
  27. }
  28. dec := json.NewDecoder(f)
  29. dec.UseNumber()
  30. for {
  31. if err := dec.Decode(&v); err == io.EOF {
  32. break
  33. } else if err != nil {
  34. return v, err
  35. }
  36. }
  37. return v, nil
  38. }
  39. func saveDb(v SongsFile) error {
  40. jsonValue, err := json.Marshal(v)
  41. if err != nil {
  42. return err
  43. }
  44. err = ioutil.WriteFile("songs.json", jsonValue, 0644)
  45. return err
  46. }