1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package dao
- import (
- "context"
- "encoding/json"
- "errors"
- "time"
- "go-common/app/job/main/search/model"
- "go-common/library/database/sql"
- "go-common/library/log"
- )
- const (
- _getBusinessSQL = "SELECT business, app_ids, asset_db, asset_es, asset_dtb FROM digger_business WHERE business=?"
- )
- type bns struct {
- d *Dao
- business string
- bInfo *model.Bsn
- }
- func newBusiness(d *Dao, business string) (bs *bns, err error) {
- bs = &bns{
- d: d,
- business: business,
- bInfo: new(model.Bsn),
- }
- if err = bs.initBusiness(); err != nil {
- log.Error("d.initBusiness error (%v)", err)
- }
- return
- }
- func (bs *bns) initBusiness() (err error) {
- var sqlBusiness *model.SQLBusiness
- for {
- if sqlBusiness, err = bs.getBusiness(context.TODO()); err != nil {
- log.Error("initBusiness error (%v)", err)
- time.Sleep(time.Second * 3)
- continue
- }
- break
- }
- if sqlBusiness == nil {
- err = errors.New("initBusiness: " + bs.business + " not found in `digger_business`")
- return
- }
- bs.bInfo.Business = sqlBusiness.Business
- bs.bInfo.AppInfo = make([]model.BsnAppInfo, 0)
- // business-appinfo
- if sqlBusiness.AppIds != "" {
- err = json.Unmarshal([]byte(sqlBusiness.AppIds), &bs.bInfo.AppInfo)
- }
- // business-assetdb
- // business-assetes
- // business-assedtb
- return
- }
- func (bs *bns) getBusiness(c context.Context) (res *model.SQLBusiness, err error) {
- res = new(model.SQLBusiness)
- row := bs.d.SearchDB.QueryRow(c, _getBusinessSQL, bs.business)
- if err = row.Scan(&res.Business, &res.AppIds, &res.AssetDB, &res.AssetES, &res.AssetDtb); err != nil {
- log.Error("business row.Scan error(%v)", err)
- if err == sql.ErrNoRows {
- err = nil
- res = nil
- return
- }
- }
- return
- }
|