(record types.ProviderMaintenanceRecord, providers map[string]struct{}, params types.ProviderMaintenanceParams)
| 227 | } |
| 228 | |
| 229 | func validateGenesisMaintenance(record types.ProviderMaintenanceRecord, providers map[string]struct{}, params types.ProviderMaintenanceParams) error { |
| 230 | if record.ID == 0 { |
| 231 | return sdkerrors.ErrInvalidRequest.Wrap("maintenance id must be set") |
| 232 | } |
| 233 | |
| 234 | if _, err := sdk.AccAddressFromBech32(record.Provider); err != nil { |
| 235 | return types.ErrInvalidAddress.Wrap(err.Error()) |
| 236 | } |
| 237 | |
| 238 | if _, exists := providers[record.Provider]; !exists { |
| 239 | return types.ErrProviderNotFound.Wrapf("maintenance provider: %s", record.Provider) |
| 240 | } |
| 241 | |
| 242 | if !keeper.ValidMaintenanceType(record.MaintenanceType) { |
| 243 | return sdkerrors.ErrInvalidRequest.Wrap("maintenance type must be specified") |
| 244 | } |
| 245 | |
| 246 | if record.StartsAt.IsZero() { |
| 247 | return sdkerrors.ErrInvalidRequest.Wrap("starts_at must be set") |
| 248 | } |
| 249 | |
| 250 | if record.ExpectedEndsAt.IsZero() { |
| 251 | return sdkerrors.ErrInvalidRequest.Wrap("expected_ends_at must be set") |
| 252 | } |
| 253 | |
| 254 | if !record.ExpectedEndsAt.After(record.StartsAt) { |
| 255 | return sdkerrors.ErrInvalidRequest.Wrap("expected_ends_at must be after starts_at") |
| 256 | } |
| 257 | |
| 258 | if record.ExpectedEndsAt.Sub(record.StartsAt) > params.MaintenanceMaxDuration { |
| 259 | return sdkerrors.ErrInvalidRequest.Wrap("maintenance duration exceeds max duration") |
| 260 | } |
| 261 | |
| 262 | if record.OpenedAt.IsZero() { |
| 263 | return sdkerrors.ErrInvalidRequest.Wrap("opened_at must be set") |
| 264 | } |
| 265 | |
| 266 | if record.ClosedAt != nil && record.ClosedAt.Before(record.OpenedAt) { |
| 267 | return sdkerrors.ErrInvalidRequest.Wrap("closed_at must be after opened_at") |
| 268 | } |
| 269 | |
| 270 | return nil |
| 271 | } |
no test coverage detected