player.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. return
  36. }
  37. err = db.QueryRowx(querySelectNextShuffledSong, *currentSongId).StructScan(shuffledSong)
  38. return
  39. }