-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdatabase.go
42 lines (36 loc) · 1.05 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
package main
import (
"database/sql"
)
type database struct {
db *sql.DB
}
// функция создания нового адреса в БД
func (d *database) newAddress (address string, short string) error {
_, err := d.db.Exec("INSERT INTO url (address, short) VALUES($1, $2)", address, short)
if err != nil {
return err
}
return err
}
// функция извлечения из БД нужного адреса
func (d *database) getNeeded (address string) string {
row := d.db.QueryRow("SELECT * FROM url WHERE short = ($1)", address)
// здесь работаем с адресами, потому что QueryRow вовзращает указатель
url := &URL{}
err := row.Scan(&url.ID, &url.Address, &url.Short)
if err != nil{
panic(err)
}
return url.Address
}
// функция получения максимального (последнего ID) из БД
func (d *database) getMax () int {
row := d.db.QueryRow("SELECT max(id) FROM url")
var maxId int
err := row.Scan(&maxId)
if err != nil {
panic(err)
}
return maxId
}