github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/storage/badger/computation_result.go (about)

     1  package badger
     2  
     3  import (
     4  	"github.com/dgraph-io/badger/v2"
     5  
     6  	"github.com/onflow/flow-go/model/flow"
     7  	"github.com/onflow/flow-go/storage/badger/operation"
     8  )
     9  
    10  type ComputationResultUploadStatus struct {
    11  	db *badger.DB
    12  }
    13  
    14  func NewComputationResultUploadStatus(db *badger.DB) *ComputationResultUploadStatus {
    15  	return &ComputationResultUploadStatus{
    16  		db: db,
    17  	}
    18  }
    19  
    20  func (c *ComputationResultUploadStatus) Upsert(blockID flow.Identifier,
    21  	wasUploadCompleted bool) error {
    22  	return operation.RetryOnConflict(c.db.Update, func(btx *badger.Txn) error {
    23  		return operation.UpsertComputationResultUploadStatus(blockID, wasUploadCompleted)(btx)
    24  	})
    25  }
    26  
    27  func (c *ComputationResultUploadStatus) GetIDsByUploadStatus(targetUploadStatus bool) ([]flow.Identifier, error) {
    28  	ids := make([]flow.Identifier, 0)
    29  	err := c.db.View(operation.GetBlockIDsByStatus(&ids, targetUploadStatus))
    30  	return ids, err
    31  }
    32  
    33  func (c *ComputationResultUploadStatus) ByID(computationResultID flow.Identifier) (bool, error) {
    34  	var ret bool
    35  	err := c.db.View(func(btx *badger.Txn) error {
    36  		return operation.GetComputationResultUploadStatus(computationResultID, &ret)(btx)
    37  	})
    38  	if err != nil {
    39  		return false, err
    40  	}
    41  
    42  	return ret, nil
    43  }
    44  
    45  func (c *ComputationResultUploadStatus) Remove(computationResultID flow.Identifier) error {
    46  	return operation.RetryOnConflict(c.db.Update, func(btx *badger.Txn) error {
    47  		return operation.RemoveComputationResultUploadStatus(computationResultID)(btx)
    48  	})
    49  }