|
|
@@ -56,7 +56,10 @@ func playlist(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
func add(w http.ResponseWriter, r *http.Request) {
|
|
|
q := r.URL.Query()
|
|
|
- pid := getpid(q.Get("pid"))
|
|
|
+ db := <-dbPool
|
|
|
+ defer func () {dbPool <- db}()
|
|
|
+
|
|
|
+ pid := getpid(db, q.Get("pid"))
|
|
|
if pid == -1 {
|
|
|
http.Error(w, "invalid pid", http.StatusBadRequest)
|
|
|
return
|
|
|
@@ -67,14 +70,15 @@ func add(w http.ResponseWriter, r *http.Request) {
|
|
|
http.Error(w, err.String(), http.StatusInternalServerError)
|
|
|
return
|
|
|
}
|
|
|
- maxOrder, err := queryInt("SELECT MAX(`order`) FROM `song` WHERE pid = ?", pid)
|
|
|
+ maxOrder, err := queryInt(db, "SELECT MAX(`order`) FROM `song` WHERE pid = ?", pid)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
http.Error(w, err.String(), http.StatusInternalServerError)
|
|
|
return
|
|
|
}
|
|
|
- _, err = prepare("INSERT INTO `song` (`pid`,`yid`,`title`,`user`,`order`) VALUES(?, ?, ?, ?, ?)",
|
|
|
- pid, q.Get("yid"), q.Get("title"), q.Get("user"), maxOrder + 1)
|
|
|
+ _, err = prepare(db,
|
|
|
+ "INSERT INTO `song` (`pid`,`yid`,`title`,`user`,`order`) VALUES(?, ?, ?, ?, ?)",
|
|
|
+ pid, q.Get("yid"), q.Get("title"), q.Get("user"), maxOrder + 1)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
http.Error(w, err.String(), http.StatusInternalServerError)
|
|
|
@@ -93,7 +97,11 @@ func add(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
func remove(w http.ResponseWriter, r *http.Request) {
|
|
|
q := r.URL.Query()
|
|
|
- pid := getpid(q.Get("pid"))
|
|
|
+
|
|
|
+ db := <-dbPool
|
|
|
+ defer func () {dbPool <- db}()
|
|
|
+
|
|
|
+ pid := getpid(db, q.Get("pid"))
|
|
|
if pid == -1 {
|
|
|
http.Error(w, "invalid pid", http.StatusBadRequest)
|
|
|
return
|
|
|
@@ -105,7 +113,7 @@ func remove(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- order, err := queryInt("SELECT `order` FROM `song` WHERE `yid` = ? AND `pid` = ?",
|
|
|
+ order, err := queryInt(db, "SELECT `order` FROM `song` WHERE `yid` = ? AND `pid` = ?",
|
|
|
q.Get("yid"), pid)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -113,7 +121,7 @@ func remove(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- _, err = prepare("DELETE FROM `song` WHERE `pid` = ? AND yid = ?",
|
|
|
+ _, err = prepare(db, "DELETE FROM `song` WHERE `pid` = ? AND yid = ?",
|
|
|
pid, q.Get("yid"))
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -121,7 +129,7 @@ func remove(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- _, err = prepare("UPDATE `song` SET `order` = `order`-1 WHERE `order` > ? AND `pid` = ?",
|
|
|
+ _, err = prepare(db, "UPDATE `song` SET `order` = `order`-1 WHERE `order` > ? AND `pid` = ?",
|
|
|
order, pid)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -141,7 +149,11 @@ func remove(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
func move(w http.ResponseWriter, r *http.Request) {
|
|
|
q := r.URL.Query()
|
|
|
- pid := getpid(q.Get("pid"))
|
|
|
+
|
|
|
+ db := <-dbPool
|
|
|
+ defer func () {dbPool <- db}()
|
|
|
+
|
|
|
+ pid := getpid(db, q.Get("pid"))
|
|
|
if pid == -1 {
|
|
|
http.Error(w, "invalid pid", http.StatusBadRequest)
|
|
|
return
|
|
|
@@ -159,7 +171,7 @@ func move(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- order, err := queryInt("SELECT `order` FROM `song` WHERE `yid` = ? AND `pid` = ?",
|
|
|
+ order, err := queryInt(db, "SELECT `order` FROM `song` WHERE `yid` = ? AND `pid` = ?",
|
|
|
q.Get("yid"), pid)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -177,7 +189,7 @@ func move(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- query, err := prepare("UPDATE `song` SET `order` = ? WHERE `order` = ? AND `pid` = ?",
|
|
|
+ query, err := prepare(db, "UPDATE `song` SET `order` = ? WHERE `order` = ? AND `pid` = ?",
|
|
|
order, newOrder, pid)
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -189,7 +201,7 @@ func move(w http.ResponseWriter, r *http.Request) {
|
|
|
return
|
|
|
}
|
|
|
// there are now two songs with that order, so also check yid
|
|
|
- _, err = prepare("UPDATE `song` SET `order` = ? WHERE `order` = ? AND `pid` = ? AND `yid` = ?",
|
|
|
+ _, err = prepare(db, "UPDATE `song` SET `order` = ? WHERE `order` = ? AND `pid` = ? AND `yid` = ?",
|
|
|
newOrder, order, pid, q.Get("yid"))
|
|
|
if err != nil {
|
|
|
db.Rollback()
|
|
|
@@ -211,7 +223,10 @@ func poll(w http.ResponseWriter, r *http.Request) {
|
|
|
q := r.URL.Query()
|
|
|
timestamp := q.Get("timestamp")
|
|
|
if timestamp == "0" {
|
|
|
- query, err := prepare(
|
|
|
+ db := <-dbPool
|
|
|
+ defer func () {dbPool <- db}()
|
|
|
+
|
|
|
+ query, err := prepare(db,
|
|
|
"SELECT `yid`,`title`,`user` FROM `playlist` JOIN `song` WHERE `id` = ? ORDER BY `order` ASC",
|
|
|
q.Get("pid"))
|
|
|
|
|
|
@@ -249,7 +264,7 @@ func poll(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
|
var update *Update
|
|
|
for i := 0; i < 30; i++ {
|
|
|
- update = getUpdates(getpid(q.Get("pid")), timestamp)
|
|
|
+ update = getUpdates(q.Get("pid"), timestamp)
|
|
|
if update != nil {
|
|
|
w.Write([]byte("["))
|
|
|
for update != nil {
|