/
database.go
164 lines (141 loc) · 4.42 KB
/
database.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
package database
import (
"database/sql"
"log"
"github.com/mattn/go-sqlite3"
data "github.com/moohbr/WebMonitor/src/data"
)
// Database is the database struct
type Database struct {
*sql.DB
}
// NewDatabase creates a new database
func NewDatabase() *Database {
sqlite3.Version()
db, err := sql.Open("sqlite3", "file:database.db?cache=shared&mode=rwc&parseTime=true")
if err != nil {
log.Fatal(err)
}
_, err = db.Exec("CREATE TABLE IF NOT EXISTS servers (name TEXT PRIMARY KEY, ip TEXT, url TEXT, avarageResponseTime TEXT, " +
"lastUpdate TEXT , lastCheck TEXT , lastStatus TEXT, monitor BOOLEAN)")
if err != nil {
log.Fatal(err)
}
_, err = db.Exec("CREATE TABLE IF NOT EXISTS users (name TEXT PRIMARY KEY, password TEXT, email TEXT," +
"admin BOOLEAN, lastLogin TEXT, lastNotif TEXT)")
if err != nil {
log.Fatal(err)
}
return &Database{db}
}
func OpenDatabase() *Database {
db, err := sql.Open("sqlite3", "file:database.db?cache=shared&mode=rwc&parseTime=true")
if err != nil {
log.Fatal(err)
}
return &Database{db}
}
// AddServer adds a server to the database
func (db *Database) AddServer(s data.Server) {
_, err := db.Exec("INSERT INTO servers VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
s.Name, s.IP, s.URL, s.AvarageResponseTime, s.LastUpdate, s.LastCheck, s.LastStatus, s.Monitor)
if err != nil {
log.Fatal(err)
}
}
// AddUser adds a user to the database
func (db *Database) AddUser(u data.User) {
_, err := db.Exec("INSERT INTO users VALUES (?, ?, ?, ?, ?, ?)", u.Name, u.Password, u.Email, u.Admin, u.LastLogin.Unix(), u.LastNotif.Unix())
if err != nil {
log.Fatal(err)
}
}
// GetServer gets a server from the database
func (db *Database) GetServer(name string) data.Server {
var s data.Server
err := db.QueryRow("SELECT * FROM servers WHERE name=?", name).Scan(&s.Name, &s.IP, &s.URL, &s.AvarageResponseTime,
&s.LastUpdate, &s.LastCheck, &s.LastStatus, &s.Monitor)
if err != nil {
log.Fatal(err)
}
return s
}
// GetUser gets a user from the database
func (db *Database) GetUser(name string) data.User {
var u data.User
err := db.QueryRow("SELECT * FROM users WHERE name=?", name).Scan(&u.Name, &u.Password, &u.Email, &u.Admin, &u.LastLogin, &u.LastNotif)
if err != nil {
log.Fatal(err)
}
return u
}
// GetServers gets all servers from the database
func (db *Database) GetServers() []data.Server {
rows, err := db.Query("SELECT * FROM servers")
if err != nil {
log.Fatal(err)
}
var servers []data.Server
for rows.Next() {
var s data.Server
err = rows.Scan(&s.Name, &s.IP, &s.URL, &s.AvarageResponseTime, &s.LastUpdate, &s.LastCheck, &s.LastStatus, &s.Monitor)
if err != nil {
log.Fatal(err)
}
servers = append(servers, s)
}
return servers
}
// GetUsers gets all users from the database
func (db *Database) GetUsers() []data.User {
rows, err := db.Query("SELECT * FROM users")
if err != nil {
log.Fatal(err)
}
var users []data.User
for rows.Next() {
var u data.User
lastlogin := u.LastLogin.String()
lastnotif := u.LastNotif.String()
err = rows.Scan(&u.Name, &u.Password, &u.Email, &u.Admin, &lastlogin, &lastnotif)
if err != nil {
log.Fatal(err)
}
users = append(users, u)
}
return users
}
// UpdateServer updates a server in the database
func (db *Database) UpdateServer(s data.Server) {
_, err := db.Exec("UPDATE servers SET ip=?, url=?, avarageResponseTime=?, lastUpdate=?, lastCheck=?, lastStatus=?, monitor=? WHERE name=?",
s.IP, s.URL, s.AvarageResponseTime, s.LastUpdate, s.LastCheck, s.LastStatus, s.Monitor, s.Name)
if err != nil {
log.Fatal(err)
}
}
// UpdateUser updates a user in the database
func (db *Database) UpdateUser(u data.User) {
_, err := db.Exec("UPDATE users SET password=?, email=?, admin=?, lastLogin=?, lastNotif=? WHERE name=?",
u.Password, u.Email, u.Admin, u.LastLogin, u.LastNotif, u.Name)
if err != nil {
log.Fatal(err)
}
}
// DeleteServer deletes a server from the database
func (db *Database) DeleteServer(name string) {
_, err := db.Exec("DELETE FROM servers WHERE name=?", name)
if err != nil {
log.Fatal(err)
}
}
// DeleteUser deletes a user from the database
func (db *Database) DeleteUser(name string) {
_, err := db.Exec("DELETE FROM users WHERE name=?", name)
if err != nil {
log.Fatal(err)
}
}
// Close closes the database
func (db *Database) Close() {
db.DB.Close()
}