player.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package repository
  2. import (
  3. "database/sql"
  4. "github.com/felamaslen/gmus-backend/pkg/types"
  5. "github.com/jmoiron/sqlx"
  6. )
  7. func GetNextSong(db *sqlx.DB, prevSongId int) (nextSong *types.Song, err error) {
  8. nextSong = &types.Song{}
  9. err = db.QueryRowx(
  10. querySelectNextSong,
  11. prevSongId,
  12. ).StructScan(nextSong)
  13. if err != nil && err == sql.ErrNoRows {
  14. err = nil
  15. nextSong = &types.Song{Id: 0}
  16. }
  17. return
  18. }
  19. func GetPrevSong(db *sqlx.DB, nextSongId int) (prevSong *types.Song, err error) {
  20. prevSong = &types.Song{}
  21. err = db.QueryRowx(
  22. querySelectPrevSong,
  23. nextSongId,
  24. ).StructScan(prevSong)
  25. if err != nil && err == sql.ErrNoRows {
  26. err = nil
  27. prevSong = &types.Song{Id: 0}
  28. }
  29. return
  30. }
  31. func GetShuffledSong(db *sqlx.DB, currentSongId *int) (shuffledSong *types.Song, err error) {
  32. shuffledSong = &types.Song{}
  33. if currentSongId == nil {
  34. err = db.QueryRowx(querySelectFirstShuffledSong).StructScan(shuffledSong)
  35. } else {
  36. err = db.QueryRowx(querySelectNextShuffledSong, *currentSongId).StructScan(shuffledSong)
  37. }
  38. if err != nil && err == sql.ErrNoRows {
  39. err = nil
  40. shuffledSong = &types.Song{Id: 0}
  41. }
  42. return
  43. }