diff options
author | raylu <raylu@mixpanel.com> | 2011-08-08 00:29:57 -0700 |
---|---|---|
committer | raylu <raylu@mixpanel.com> | 2011-08-08 00:29:57 -0700 |
commit | 0164e2515ae5ff6cedf37c4ae8344eae4d1b9b94 (patch) | |
tree | 5c2b7ebd5349ebc6fe1be7059073f8fe19249d21 /main.go | |
parent | e6b9900d3ba394eba04b84a8a01be644d43d642c (diff) | |
download | audioaxis-0164e2515ae5ff6cedf37c4ae8344eae4d1b9b94.tar.xz |
dbpool!
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 43 |
1 files changed, 29 insertions, 14 deletions
@@ -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 { |