hdx/db.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
}