55 lines
789 B
Go
55 lines
789 B
Go
package hdx
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
_ "github.com/lib/pq"
|
|
)
|
|
|
|
type DB struct {
|
|
db *sqlx.DB
|
|
}
|
|
|
|
func NewDB(dbhost, dbname, dbuser string) (*DB, error) {
|
|
var err error
|
|
config := fmt.Sprintf(
|
|
"user=%s dbname=%s host=%s sslmode=disable",
|
|
dbuser,
|
|
dbname,
|
|
dbhost,
|
|
)
|
|
db, err := sqlx.Connect(
|
|
"postgres",
|
|
config,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
d := &DB{db}
|
|
err = d.initializeDB()
|
|
db.SetMaxOpenConns(8)
|
|
return d, err
|
|
}
|
|
|
|
func (d *DB) initializeDB() error {
|
|
// XXX ignoring errors
|
|
_, err := d.db.Exec(createdb)
|
|
return err
|
|
|
|
}
|
|
|
|
func (d *DB) getcount(ip string) (int, error) {
|
|
result := 0
|
|
row := d.db.QueryRow("SELECT COUNT(*) FROM ips WHERE ip = $1",
|
|
ip,
|
|
)
|
|
|
|
err := row.Scan(&result)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return result, nil
|
|
}
|