go-common/app/job/openplatform/open-market/dao/dao.go
2019-04-22 18:49:16 +08:00

89 lines
1.7 KiB
Go

package dao
import (
"context"
"time"
"go-common/app/job/openplatform/open-market/conf"
"go-common/library/database/sql"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
elastic "gopkg.in/olivere/elastic.v5"
)
//Dao struct
type Dao struct {
c *conf.Config
// http client
client *bm.Client
// db
ticketDB *sql.DB
//es
es *elastic.Client
esUgc *elastic.Client
}
// New new a Dao and return.
func New(c *conf.Config) (d *Dao) {
var (
err error
es *elastic.Client
esUgc *elastic.Client
)
d = &Dao{
c: c,
client: bm.NewClient(c.HTTPClient),
ticketDB: sql.NewMySQL(c.DB.TicketDB),
}
es, err = elastic.NewClient(
elastic.SetURL(c.ElasticSearch.Addr...),
elastic.SetSniff(false),
elastic.SetHealthcheckInterval(time.Duration(c.ElasticSearch.Check)),
elastic.SetErrorLog(&elog{}),
elastic.SetInfoLog(&ilog{}),
)
if err != nil {
panic(err)
}
esUgc, err = elastic.NewClient(
elastic.SetURL(c.ElasticSearchUgc.Addr...),
elastic.SetSniff(false),
elastic.SetHealthcheckInterval(time.Duration(c.ElasticSearch.Check)),
elastic.SetErrorLog(&elog{}),
elastic.SetInfoLog(&ilog{}),
)
if err != nil {
panic(err)
}
d.es = es
d.esUgc = esUgc
return d
}
// Ping ping health.
func (d *Dao) Ping(c context.Context) (err error) {
return d.ticketDB.Ping(c)
}
// Close close.
func (d *Dao) Close() (err error) {
if err = d.ticketDB.Close(); err != nil {
log.Error("dao.ticketDB.Close() error(%v)", err)
}
return
}
type ilog struct{}
type elog struct{}
// Printf printf.
func (l *ilog) Printf(format string, v ...interface{}) {
log.Info(format, v...)
}
// Printf printf.
func (l *elog) Printf(format string, v ...interface{}) {
log.Error(format, v...)
}