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