func (this *Base) Populate(ctx context.Context, row history.Operation) { this.ID = fmt.Sprintf("%d", row.ID) this.PT = row.PagingToken() this.SourceAccount = row.SourceAccount this.populateType(row) lb := hal.LinkBuilder{httpx.BaseURL(ctx)} self := fmt.Sprintf("/operations/%d", row.ID) this.Links.Self = lb.Link(self) this.Links.Succeeds = lb.Linkf("/effects?order=desc&cursor=%s", this.PT) this.Links.Precedes = lb.Linkf("/effects?order=asc&cursor=%s", this.PT) this.Links.Transaction = lb.Linkf("/transactions/%s", row.TransactionHash) this.Links.Effects = lb.Link(self, "effects") }
// New creates a new operation resource, finding the appropriate type to use // based upon the row's type. func New( ctx context.Context, row history.Operation, ) (result hal.Pageable, err error) { base := Base{} base.Populate(ctx, row) switch row.Type { case xdr.OperationTypeCreateAccount: e := CreateAccount{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypePayment: e := Payment{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypePathPayment: e := PathPayment{} e.Payment.Base = base err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeManageOffer: e := ManageOffer{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeCreatePassiveOffer: e := CreatePassiveOffer{} e.ManageOffer.Base = base err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeSetOptions: e := SetOptions{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeChangeTrust: e := ChangeTrust{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeAllowTrust: e := AllowTrust{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeAccountMerge: e := AccountMerge{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeInflation: e := Inflation{Base: base} err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeManageData: e := ManageData{Base: base} err = row.UnmarshalDetails(&e) result = e default: result = base } return }