// 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 }