github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/exttinygo/impl.go (about)

     1  /*
     2  * Copyright (c) 2023-present unTill Pro, Ltd.
     3  *  @author Michael Saigachenko
     4   */
     5  
     6  package exttinygo
     7  
     8  import (
     9  	"github.com/voedger/voedger/pkg/exttinygo/internal"
    10  	safe "github.com/voedger/voedger/pkg/state/isafestateapi"
    11  )
    12  
    13  func Assert(condition bool, msg string) {
    14  	if !condition {
    15  		panic("assertion failed: " + msg)
    16  	}
    17  }
    18  
    19  func keyBuilderImpl(storage, entity string) (b TKeyBuilder) {
    20  	return TKeyBuilder(internal.SafeStateAPI.KeyBuilder(storage, entity))
    21  }
    22  
    23  func queryValueImpl(key TKeyBuilder) (value TValue, exists bool) {
    24  	v, exsts := internal.SafeStateAPI.QueryValue(safe.TKeyBuilder(key))
    25  	return TValue(v), exsts
    26  }
    27  
    28  func mustGetValueImpl(key TKeyBuilder) TValue {
    29  	return TValue(internal.SafeStateAPI.MustGetValue(safe.TKeyBuilder(key)))
    30  }
    31  
    32  var readCallback func(key TKey, value TValue)
    33  
    34  var safeReadCallback = func(key safe.TKey, value safe.TValue) {
    35  	readCallback(TKey(key), TValue(value))
    36  }
    37  
    38  func readValuesImpl(key TKeyBuilder, cb func(key TKey, value TValue)) {
    39  	readCallback = cb
    40  	internal.SafeStateAPI.ReadValues(safe.TKeyBuilder(key), safeReadCallback)
    41  }
    42  
    43  func updateValueImpl(key TKeyBuilder, existingValue TValue) TIntent {
    44  	return TIntent(internal.SafeStateAPI.UpdateValue(safe.TKeyBuilder(key), safe.TValue(existingValue)))
    45  }
    46  
    47  func newValueImpl(key TKeyBuilder) TIntent {
    48  	return TIntent(internal.SafeStateAPI.NewValue(safe.TKeyBuilder(key)))
    49  }