diff --git a/contract_info.go b/contract_info.go index 5e45a9bd7..13fdb5449 100644 --- a/contract_info.go +++ b/contract_info.go @@ -15,10 +15,12 @@ type ContractInfo struct { Storage uint64 ContractMemo string Balance uint64 + IsDeleted bool + TokenRelationships map[TokenID]TokenRelationship } func newContractInfo(accountID AccountID, contractID ContractID, contractAccountID string, adminKey PublicKey, expirationTime time.Time, - autoRenewPeriod time.Duration, storage uint64, ContractMemo string) ContractInfo { + autoRenewPeriod time.Duration, storage uint64, ContractMemo string, isDeleted bool, tokenRelationship map[TokenID]TokenRelationship) ContractInfo { return ContractInfo{ AccountID: accountID, ContractID: contractID, @@ -28,6 +30,8 @@ func newContractInfo(accountID AccountID, contractID ContractID, contractAccount AutoRenewPeriod: autoRenewPeriod, Storage: storage, ContractMemo: ContractMemo, + IsDeleted: isDeleted, + TokenRelationships: tokenRelationship, } } @@ -37,6 +41,13 @@ func contractInfoFromProtobuf(contractInfo *proto.ContractGetInfoResponse_Contra return ContractInfo{}, err } + var tokenRelationship = make(map[TokenID]TokenRelationship, len(contractInfo.TokenRelationships)) + if contractInfo.TokenRelationships != nil { + for _, relation := range contractInfo.TokenRelationships { + tokenRelationship[tokenIDFromProtobuf(relation.TokenId)] = tokenRelationshipFromProtobuf(relation) + } + } + return ContractInfo{ AccountID: accountIDFromProtobuf(contractInfo.AccountID), ContractID: contractIDFromProtobuf(contractInfo.ContractID), @@ -44,24 +55,36 @@ func contractInfoFromProtobuf(contractInfo *proto.ContractGetInfoResponse_Contra AdminKey: PublicKey{ keyData: adminKey.toProtoKey().GetEd25519(), }, - ExpirationTime: timeFromProtobuf(contractInfo.ExpirationTime), - AutoRenewPeriod: durationFromProtobuf(contractInfo.AutoRenewPeriod), - Storage: uint64(contractInfo.Storage), - ContractMemo: contractInfo.Memo, - Balance: contractInfo.Balance, + ExpirationTime: timeFromProtobuf(contractInfo.ExpirationTime), + AutoRenewPeriod: durationFromProtobuf(contractInfo.AutoRenewPeriod), + Storage: uint64(contractInfo.Storage), + ContractMemo: contractInfo.Memo, + Balance: contractInfo.Balance, + IsDeleted: contractInfo.Deleted, + TokenRelationships: tokenRelationship, }, nil } func (contractInfo *ContractInfo) toProtobuf() *proto.ContractGetInfoResponse_ContractInfo { + var tokenRelationship = make([]*proto.TokenRelationship, len(contractInfo.TokenRelationships)) + count := 0 + if len(tokenRelationship) > 0 { + for _, relation := range contractInfo.TokenRelationships { + tokenRelationship[count] = relation.toProtobuf() + count++ + } + } + return &proto.ContractGetInfoResponse_ContractInfo{ - ContractID: contractInfo.ContractID.toProtobuf(), - AccountID: contractInfo.AccountID.toProtobuf(), - ContractAccountID: contractInfo.ContractAccountID, - AdminKey: contractInfo.AdminKey.toProtoKey(), - ExpirationTime: timeToProtobuf(contractInfo.ExpirationTime), - AutoRenewPeriod: durationToProtobuf(contractInfo.AutoRenewPeriod), - Storage: int64(contractInfo.Storage), - Memo: contractInfo.ContractMemo, - Balance: contractInfo.Balance, + ContractID: contractInfo.ContractID.toProtobuf(), + AccountID: contractInfo.AccountID.toProtobuf(), + ContractAccountID: contractInfo.ContractAccountID, + AdminKey: contractInfo.AdminKey.toProtoKey(), + ExpirationTime: timeToProtobuf(contractInfo.ExpirationTime), + AutoRenewPeriod: durationToProtobuf(contractInfo.AutoRenewPeriod), + Storage: int64(contractInfo.Storage), + Memo: contractInfo.ContractMemo, + Balance: contractInfo.Balance, + TokenRelationships: tokenRelationship, } }