// New creates a new operation resource, finding the appropriate type to use // based upon the row's type. func New( ctx context.Context, row db.OperationRecord, ) (result hal.Pageable, err error) { switch row.Type { case xdr.OperationTypeCreateAccount: e := CreateAccount{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypePayment: e := Payment{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypePathPayment: e := PathPayment{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeManageOffer: e := ManageOffer{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeCreatePassiveOffer: e := CreatePassiveOffer{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeSetOptions: e := SetOptions{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeChangeTrust: e := ChangeTrust{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeAllowTrust: e := AllowTrust{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeAccountMerge: e := AccountMerge{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e case xdr.OperationTypeInflation: e := Inflation{} e.Populate(ctx, row) err = row.UnmarshalDetails(&e) result = e default: e := Base{} e.Populate(ctx, row) result = e } return }