Prechádzať zdrojové kódy

some db refactoring

raylu 14 rokov pred
rodič
commit
ab80133d57
2 zmenil súbory, kde vykonal 41 pridanie a 34 odobranie
  1. 35 7
      db.go
  2. 6 27
      main.go

+ 35 - 7
db.go

@@ -1,19 +1,45 @@
 package main
 
 import (
+	mysql "github.com/Philio/GoMySQL"
 	"os"
+	"log"
 )
 
-func queryInt(sql string, params ...interface{}) (int, os.Error) {
+var db *mysql.Client
+
+func initDb() {
+	log.SetFlags(log.Ltime | log.Lshortfile)
+
+	var err os.Error
+	db, err = mysql.DialTCP("173.228.31.111", "audio", "audio", "audio")
+	if err != nil {
+		log.Panicln(err)
+	}
+	db.Reconnect = true
+}
+
+func prepare(sql string, params ...interface{}) (*mysql.Statement, os.Error) {
 	query, err := db.Prepare(sql)
 	if err != nil {
-		return 0, err
+		log.Println(err)
+		return nil, err
 	}
 	err = query.BindParams(params...)
 	if err != nil {
-		return 0, err
+		log.Println(err)
+		return nil, err
 	}
 	err = query.Execute()
+	if err != nil {
+		log.Println(err)
+		return nil, err
+	}
+	return query, err
+}
+
+func queryInt(sql string, params ...interface{}) (int, os.Error) {
+	query, err := prepare(sql, params...)
 	if err != nil {
 		return 0, err
 	}
@@ -21,15 +47,17 @@ func queryInt(sql string, params ...interface{}) (int, os.Error) {
 	query.BindResult(&result)
 	eof, err := query.Fetch()
 	if err != nil {
-		return 0, err
+		log.Println(err)
+		return result, err
 	} else if eof {
-		return 0, os.EOF
+		return result, os.EOF
 	}
 	err = query.FreeResult()
 	if err != nil {
-		return 0, err
+		log.Println(err)
+		return result, err
 	}
-	return result, nil
+	return result, err
 }
 
 // given an id ('abcd1234'), return the pid (1)

+ 6 - 27
main.go

@@ -4,7 +4,6 @@ import (
 	"fmt"
 	"http"
 	"exp/template"
-	mysql "github.com/Philio/GoMySQL"
 	"os"
 	"json"
 	"strconv"
@@ -22,10 +21,9 @@ type Playlist struct {
 
 var templates map[string]*template.Template
 const debug = true
-var db *mysql.Client
 
 func home(w http.ResponseWriter, r *http.Request) {
-	fmt.Fprintf(w, "path is %s", r.URL.Path[1:])
+	fmt.Fprintf(w, "Welcome to Audio Axis!")
 }
 
 func playlist(w http.ResponseWriter, r *http.Request) {
@@ -171,21 +169,9 @@ func poll(w http.ResponseWriter, r *http.Request) {
 	q := r.URL.Query()
 	timestamp := q.Get("timestamp")
 	if timestamp == "0" {
-		query, err := db.Prepare("SELECT `yid`,`title`,`user` FROM `playlist` JOIN `song` WHERE `id` = ? ORDER BY `order` ASC")
-		if err != nil {
-			http.Error(w, err.String(), http.StatusInternalServerError)
-			return
-		}
-		err = query.BindParams(q.Get("pid"))
-		if err != nil {
-			http.Error(w, err.String(), http.StatusInternalServerError)
-			return
-		}
-		err = query.Execute()
-		if err != nil {
-			http.Error(w, err.String(), http.StatusInternalServerError)
-			return
-		}
+		query, err := prepare(
+			"SELECT `yid`,`title`,`user` FROM `playlist` JOIN `song` WHERE `id` = ? ORDER BY `order` ASC",
+			q.Get("pid"))
 
 		updates := make([]Update, 0, 2)
 		for {
@@ -254,14 +240,7 @@ func main() {
 		templates[path] = t
 	}
 
-	var err os.Error
-	//db, err = mysql.DialTCP("raylu.net", "audio", "audio", "audio")
-	db, err = mysql.DialTCP("173.228.31.111", "audio", "audio", "audio")
-	if err != nil {
-		fmt.Println(err)
-		os.Exit(1)
-	}
-	db.Reconnect = true
+	initDb()
 
 	http.HandleFunc("/", home)
 	http.HandleFunc("/p/", playlist)
@@ -269,7 +248,7 @@ func main() {
 	http.HandleFunc("/remove/", remove)
 	http.HandleFunc("/move/", move)
 	http.HandleFunc("/poll/", poll)
-	err = http.ListenAndServe("localhost:8000", nil)
+	err := http.ListenAndServe("localhost:8000", nil)
 	if err != nil {
 		fmt.Println(err)
 		os.Exit(1)