fabric-samples/off_chain_data/application-go/contract/contract.go
Stanislav Jakuschevskij 6a5e5ddc12
Add off-chain-data go client application (#1269)
Signed-off-by: Stanislav Jakuschevskij <stas@two-giants.com>
2025-03-05 17:26:33 +00:00

76 lines
1.4 KiB
Go

package contract
import (
"encoding/json"
"strconv"
"github.com/hyperledger/fabric-gateway/pkg/client"
)
type AssetTransferBasic struct {
contract *client.Contract
}
func NewAssetTransferBasic(contract *client.Contract) *AssetTransferBasic {
return &AssetTransferBasic{contract}
}
func (atb *AssetTransferBasic) CreateAsset(anAsset Asset) error {
if _, err := atb.contract.Submit(
"CreateAsset",
client.WithArguments(
anAsset.ID,
anAsset.Color,
strconv.FormatUint(anAsset.Size, 10),
anAsset.Owner,
strconv.FormatUint(anAsset.AppraisedValue, 10),
)); err != nil {
return err
}
return nil
}
func (atb *AssetTransferBasic) TransferAsset(id, newOwner string) (string, error) {
result, err := atb.contract.Submit(
"TransferAsset",
client.WithArguments(
id,
newOwner,
),
)
if err != nil {
return "", err
}
return string(result), nil
}
func (atb *AssetTransferBasic) DeleteAsset(id string) error {
if _, err := atb.contract.Submit(
"DeleteAsset",
client.WithArguments(
id,
),
); err != nil {
return err
}
return nil
}
func (atb *AssetTransferBasic) GetAllAssets() ([]Asset, error) {
assetsRaw, err := atb.contract.Evaluate("GetAllAssets")
if err != nil {
return nil, err
}
if len(assetsRaw) == 0 {
return nil, nil
}
assets := []Asset{}
if err := json.Unmarshal(assetsRaw, &assets); err != nil {
return nil, err
}
return assets, nil
}