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.
77 lines
1.7 KiB
77 lines
1.7 KiB
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 |
|
}
|
|
|