refactor: init user token balance data

This commit is contained in:
jiedo
2024-05-16 18:03:30 +08:00
parent dc31351590
commit a0a718422d
3 changed files with 29 additions and 39 deletions

View File

@@ -45,24 +45,7 @@ func (g *BRC20ModuleIndexer) ProcessMint(data *model.InscriptionBRC20Data) error
}
// get user's tokens to update
var userTokens map[string]*model.BRC20TokenBalance
if tokens, ok := g.UserTokensBalanceData[string(data.PkScript)]; !ok {
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
g.UserTokensBalanceData[string(data.PkScript)] = userTokens
} else {
userTokens = tokens
}
// get tokenBalance to update
var tokenBalance *model.BRC20TokenBalance
if token, ok := userTokens[uniqueLowerTicker]; !ok {
tokenBalance = &model.BRC20TokenBalance{Ticker: tokenInfo.Ticker, PkScript: data.PkScript}
userTokens[uniqueLowerTicker] = tokenBalance
} else {
tokenBalance = token
}
// init token's users
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
tokenUsers[string(data.PkScript)] = tokenBalance
tokenBalance := g.GetUserTokenBalance(tokenInfo.Ticker, string(data.PkScript))
body.BRC20Tick = tokenInfo.Ticker
mintInfo := model.NewInscriptionBRC20TickInfo(body.BRC20Tick, body.Operation, data)

View File

@@ -107,27 +107,6 @@ func (g *BRC20ModuleIndexer) ProcessTransfer(data *model.InscriptionBRC20Data, t
return errors.New("transfer, invalid transfer")
}
// to
// get user's tokens to update
var userTokens map[string]*model.BRC20TokenBalance
if tokens, ok := g.UserTokensBalanceData[receiverPkScript]; !ok {
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
g.UserTokensBalanceData[receiverPkScript] = userTokens
} else {
userTokens = tokens
}
// get tokenBalance to update
var tokenBalance *model.BRC20TokenBalance
if token, ok := userTokens[uniqueLowerTicker]; !ok {
tokenBalance = &model.BRC20TokenBalance{Ticker: transferInfo.Tick, PkScript: receiverPkScript}
userTokens[uniqueLowerTicker] = tokenBalance
} else {
tokenBalance = token
}
// set token's users
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
tokenUsers[receiverPkScript] = tokenBalance
// set from
fromTokenBalance.UpdateHeight = data.Height
@@ -144,6 +123,10 @@ func (g *BRC20ModuleIndexer) ProcessTransfer(data *model.InscriptionBRC20Data, t
userHistoryFrom := g.GetBRC20HistoryByUser(senderPkScript)
userHistoryFrom.History = append(userHistoryFrom.History, fromHistory)
}
// to
// get user's tokens to update
tokenBalance := g.GetUserTokenBalance(transferInfo.Tick, receiverPkScript)
// set to
tokenBalance.UpdateHeight = data.Height

View File

@@ -178,6 +178,30 @@ func (g *BRC20ModuleIndexer) initModule() {
g.InscriptionsValidCommitMapById = make(map[string]*model.InscriptionBRC20Data, 0) // inner valid commit
}
func (g *BRC20ModuleIndexer) GetUserTokenBalance(ticker, userPkScript string) (tokenBalance *model.BRC20TokenBalance) {
uniqueLowerTicker := strings.ToLower(ticker)
// get user's tokens to update
var userTokens map[string]*model.BRC20TokenBalance
if tokens, ok := g.UserTokensBalanceData[userPkScript]; !ok {
userTokens = make(map[string]*model.BRC20TokenBalance, 0)
g.UserTokensBalanceData[userPkScript] = userTokens
} else {
userTokens = tokens
}
// get tokenBalance to update
if tb, ok := userTokens[uniqueLowerTicker]; !ok {
tokenBalance = &model.BRC20TokenBalance{Ticker: ticker, PkScript: userPkScript}
userTokens[uniqueLowerTicker] = tokenBalance
} else {
tokenBalance = tb
}
// set token's users
tokenUsers := g.TokenUsersBalanceData[uniqueLowerTicker]
tokenUsers[userPkScript] = tokenBalance
return tokenBalance
}
func (g *BRC20ModuleIndexer) GenerateApproveEventsByTransfer(inscription, tick, from, to string, amt *decimal.Decimal) (events []*model.ConditionalApproveEvent) {
transStateStatic := &model.TransferStateForConditionalApprove{
Tick: tick,