db.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. mysql "github.com/Philio/GoMySQL"
  4. "os"
  5. "log"
  6. )
  7. var db *mysql.Client
  8. func initDb() {
  9. log.SetFlags(log.Ltime | log.Lshortfile)
  10. var err os.Error
  11. db, err = mysql.DialTCP("173.228.31.111", "audio", "audio", "audio")
  12. if err != nil {
  13. log.Panicln(err)
  14. }
  15. db.Reconnect = true
  16. }
  17. func prepare(sql string, params ...interface{}) (*mysql.Statement, os.Error) {
  18. query, err := db.Prepare(sql)
  19. if err != nil {
  20. log.Println(err)
  21. return nil, err
  22. }
  23. err = query.BindParams(params...)
  24. if err != nil {
  25. log.Println(err)
  26. return nil, err
  27. }
  28. err = query.Execute()
  29. if err != nil {
  30. log.Println(err)
  31. return nil, err
  32. }
  33. return query, err
  34. }
  35. func queryInt(sql string, params ...interface{}) (int, os.Error) {
  36. query, err := prepare(sql, params...)
  37. if err != nil {
  38. return 0, err
  39. }
  40. var result int
  41. query.BindResult(&result)
  42. eof, err := query.Fetch()
  43. if err != nil {
  44. log.Println(err)
  45. return result, err
  46. } else if eof {
  47. return result, os.EOF
  48. }
  49. err = query.FreeResult()
  50. if err != nil {
  51. log.Println(err)
  52. return result, err
  53. }
  54. return result, err
  55. }
  56. // given an id ('abcd1234'), return the pid (1)
  57. func getpid(id string) int {
  58. pid, err := queryInt("SELECT `pid` FROM `playlist` WHERE `id` = ?", id)
  59. if err != nil {
  60. return -1
  61. }
  62. return pid
  63. }