mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 07:25:10 +00:00
76 lines
1.4 KiB
Go
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
|
|
}
|