summaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go43
1 files changed, 29 insertions, 14 deletions
diff --git a/main.go b/main.go
index 3bec1b9..21af0a8 100644
--- a/main.go
+++ b/main.go
@@ -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 {