mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
519 B
34 lines
519 B
package db |
|
|
|
import ( |
|
"errors" |
|
"fmt" |
|
|
|
"github.com/go-gorp/gorp" |
|
) |
|
|
|
func NewHealthChecker(dbm *gorp.DbMap) *healthChecker { |
|
return &healthChecker{dbMap: dbm} |
|
} |
|
|
|
type healthChecker struct { |
|
dbMap *gorp.DbMap |
|
} |
|
|
|
func (hc *healthChecker) Healthy() (err error) { |
|
if err = hc.dbMap.Db.Ping(); err != nil { |
|
err = fmt.Errorf("database error: %v", err) |
|
return |
|
} |
|
|
|
num, err := hc.dbMap.SelectInt("SELECT 1") |
|
if err != nil { |
|
return |
|
} |
|
|
|
if num != 1 { |
|
err = errors.New("unable to connect to database") |
|
} |
|
|
|
return |
|
}
|
|
|