· 9 years ago · Feb 02, 2017, 01:40 PM
1package database
2
3import (
4 "database/sql"
5 _ "github.com/mattn/go-sqlite3"
6 "github.com/kardianos/osext"
7 "log"
8 "my/FesteloGoBot/proj/lib"
9 "time"
10)
11const dbname = "\\data.db"
12var path string
13var db *sql.DB
14
15func Open(){
16 subpath , _ := osext.ExecutableFolder()
17 path = subpath + dbname
18 var err error
19 db, err = sql.Open("sqlite3", path)
20 check(err)
21 sqlStmt := `
22 CREATE TABLE if not exists ` + "skinup" + ` (
23 ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
24 Balance INTEGER NOT NULL,
25 Name TEXT NOT NULL,
26 RewardTime TEXT NOT NULL,
27 RefreshTime TEXT NOT NULL,
28 Cookie TEXT NOT NULL
29 );
30 `
31 _, err2 := db.Exec(sqlStmt)
32 check(err2)
33}
34
35func Add(users []lib.User){
36 tx, err := db.Begin()
37 check(err)
38 stmt, err := tx.Prepare("insert into SkinUp(Balance, Name, Cookie, RewardTime, RefreshTime) values(?, ?, ?, ?, ?)")
39 check(err)
40 defer stmt.Close()
41 for _, u := range users{
42 _, err = stmt.Exec( u.Balance, u.Name, u.Cookie, u.RewardTime.Format(time.RFC1123Z), u.RefreshTime.Format(time.RFC1123Z))
43 check(err)
44 }
45 tx.Commit()
46}
47
48func Get() map[int]lib.User {
49 ret := make(map[int]lib.User)
50 cmd := "select ID, Balance, Name, Cookie, RewardTime, RefreshTime from SkinUp"
51 rows, err := db.Query(cmd)
52 check(err)
53 defer rows.Close()
54 for rows.Next() {
55 var id int
56 var bal int
57 var name string
58 var cookie string
59 var timeRewStr string
60 var timeRefStr string
61 err = rows.Scan(&id, &bal, &name, &cookie, &timeRewStr, &timeRefStr)
62 timeRew , _:= time.Parse(time.RFC1123Z, timeRewStr)
63 timeRef , _:= time.Parse(time.RFC1123Z, timeRefStr)
64 check(err)
65 ret[id] = lib.User{
66 ID: id,
67 Balance: bal,
68 Name: name,
69 Cookie: cookie,
70 RewardTime: timeRew,
71 RefreshTime: timeRef,
72 }
73 }
74 err = rows.Err()
75 check(err)
76
77 return ret
78}
79
80func Remove(ids []int){
81 tx, err := db.Begin()
82 check(err)
83 stmt, err := tx.Prepare("delete from SkinUp where ID = (?)")
84 check(err)
85 for _, i := range ids{
86 _, err = stmt.Exec(i)
87 check(err)
88 }
89 tx.Commit()
90}
91
92func Update(users []lib.User){
93 tx, err := db.Begin()
94 check(err)
95 stmt, err := tx.Prepare(`UPDATE SkinUp
96 SET RewardTime=(?),
97 RefreshTime=(?),
98 Balance=(?),
99 Name=(?),
100 Cookie=(?)
101 WHERE ID=(?)`)
102 check(err)
103 for _, u := range users{
104 _, err = stmt.Exec(u.RewardTime.Format(time.RFC1123Z), u.RefreshTime.Format(time.RFC1123Z), u.Balance, u.Name, u.Cookie, u.ID)
105 check(err)
106 }
107 tx.Commit()
108}
109
110func check(err error) {
111 if err != nil {
112 log.Fatal(err)
113 }
114}