|
|
package codeforcesbot
|
|
|
|
|
|
import (
|
|
|
"database/sql"
|
|
|
"fmt"
|
|
|
"strings"
|
|
|
|
|
|
_ "github.com/lib/pq"
|
|
|
)
|
|
|
|
|
|
var db *sql.DB
|
|
|
|
|
|
func SqlOpen() {
|
|
|
var err error
|
|
|
db, err = sql.Open("postgres", "port=5432 user=postgres password=postgres dbname=codeforcesbotdb sslmode=disable")
|
|
|
//port是数据库的端口号,默认是5432,如果改了,这里一定要自定义;
|
|
|
//user就是你数据库的登录帐号;
|
|
|
//dbname就是你在数据库里面建立的数据库的名字;
|
|
|
//sslmode就是安全验证模式;
|
|
|
|
|
|
//还可以是这种方式打开
|
|
|
//db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full")
|
|
|
CheckErr(err)
|
|
|
}
|
|
|
func SqlInsertCFid(qqid int64, cfid string) string{
|
|
|
//插入数据
|
|
|
stmt, err := db.Prepare("INSERT INTO codeforcesId(qqid, cfid) VALUES($1,$2)")
|
|
|
CheckErr(err)
|
|
|
|
|
|
res, err := stmt.Exec(qqid, cfid)
|
|
|
|
|
|
if err != nil {
|
|
|
return err.Error()
|
|
|
}
|
|
|
|
|
|
affect, err := res.RowsAffected()
|
|
|
CheckErr(err)
|
|
|
|
|
|
return fmt.Sprintf("OK rows affect:", affect)
|
|
|
}
|
|
|
|
|
|
func SqlQueryHandles(qqid int64) (ret []string){
|
|
|
rows, err := db.Query(fmt.Sprintf("SELECT cfid FROM codeforcesid WHERE qqid = %v", qqid))
|
|
|
CheckErr(err)
|
|
|
for rows.Next() {
|
|
|
var handle string
|
|
|
CheckErr(rows.Scan(&handle))
|
|
|
ret = append(ret, strings.TrimSpace(handle))
|
|
|
}
|
|
|
return ret
|
|
|
}
|
|
|
|
|
|
func SqlGetNotifiedGroup() (groups []int64) {
|
|
|
rows, err := db.Query("SELECT groupid FROM codeforcesnotify")
|
|
|
CheckErr(err)
|
|
|
for rows.Next() {
|
|
|
var groupid int64
|
|
|
CheckErr(rows.Scan(&groupid))
|
|
|
groups = append(groups, groupid)
|
|
|
}
|
|
|
return groups
|
|
|
}
|
|
|
/*
|
|
|
func sqlSelect() {
|
|
|
//查询数据
|
|
|
rows, err := db.Query("SELECT * FROM userinfo")
|
|
|
CheckErr(err)
|
|
|
|
|
|
println("-----------")
|
|
|
for rows.Next() {
|
|
|
var uid int
|
|
|
var username string
|
|
|
var department string
|
|
|
var created string
|
|
|
err = rows.Scan(&uid, &username, &department, &created)
|
|
|
CheckErr(err)
|
|
|
fmt.Println("uid = ", uid, "\nname = ", username, "\ndep = ", department, "\ncreated = ", created, "\n-----------")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
func sqlUpdate() {
|
|
|
//更新数据
|
|
|
stmt, err := db.Prepare("update userinfo set username=$1 where uid=$2")
|
|
|
CheckErr(err)
|
|
|
|
|
|
res, err := stmt.Exec("ficow", 1)
|
|
|
CheckErr(err)
|
|
|
|
|
|
affect, err := res.RowsAffected()
|
|
|
CheckErr(err)
|
|
|
|
|
|
fmt.Println("rows affect:", affect)
|
|
|
}
|
|
|
*/
|
|
|
func sqlClose() {
|
|
|
db.Close()
|
|
|
}
|
|
|
func CheckErr(err error) {
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
} |