package executor import ( "fmt" uf "gitlab.33.cn/chain33/chain33/plugin/dapp/unfreeze/types" "gitlab.33.cn/chain33/chain33/types" ) func (u *Unfreeze) execLocal(receiptData *types.ReceiptData) (*types.LocalDBSet, error) { dbSet := &types.LocalDBSet{} if receiptData.GetTy() != types.ExecOk { return dbSet, nil } for _, log := range receiptData.Logs { switch log.Ty { case uf.TyLogCreateUnfreeze, uf.TyLogWithdrawUnfreeze, uf.TyLogTerminateUnfreeze: var receipt uf.ReceiptUnfreeze err := types.Decode(log.Log, &receipt) if err != nil { return nil, err } kv := u.saveUnfreezeCreate(&receipt) dbSet.KV = append(dbSet.KV, kv...) default: return nil, types.ErrNotSupport } } return dbSet, nil } func (u *Unfreeze) ExecLocal_Create(payload *uf.UnfreezeCreate, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { return u.execLocal(receiptData) } func (u *Unfreeze) ExecLocal_Withdraw(payload *uf.UnfreezeWithdraw, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { return u.execLocal(receiptData) } func (u *Unfreeze) ExecLocal_Terminate(payload *uf.UnfreezeTerminate, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { return u.execLocal(receiptData) } func (u *Unfreeze) saveUnfreezeCreate(res *uf.ReceiptUnfreeze) (kvs []*types.KeyValue) { kv := &types.KeyValue{} kv.Key = []byte(fmt.Sprintf("mavl-unfreeze-"+"%s-"+"%s-"+"%s", res.Cur.Initiator, res.Cur.Beneficiary, res.Cur.AssetSymbol)) kv.Value = []byte(res.Cur.UnfreezeID) kvs = append(kvs, kv) return kvs } func (u *Unfreeze) rollbackUnfreezeCreate(res *uf.ReceiptUnfreeze) (kvs []*types.KeyValue) { kv := &types.KeyValue{} kv.Key = []byte(fmt.Sprintf("mavl-unfreeze-"+"%s-"+"%s-"+"%s", res.Cur.Initiator, res.Cur.Beneficiary, res.Cur.AssetSymbol)) kv.Value = []byte(res.Cur.UnfreezeID) kvs = append(kvs, kv) return kvs }