Skip to content
Snippets Groups Projects
NodeRegistrationReport.swift 765 B
Newer Older
import Foundation

public struct NodeRegistrationReport: Equatable {
  public init(
    registered: Int,
    total: Int
  ) {
    self.registered = registered
    self.total = total
  }

  public var registered: Int
  public var total: Int
}

extension NodeRegistrationReport {
  public var ratio: Double {
    guard total != 0 else { return 0 }
    return Double(registered) / Double(total)
  }
}

extension NodeRegistrationReport: Codable {
  enum CodingKeys: String, CodingKey {
    case registered = "NumberOfNodesRegistered"
    case total = "NumberOfNodes"
  }

  public static func decode(_ data: Data) throws -> Self {
    try JSONDecoder().decode(Self.self, from: data)
  }

  public func encode() throws -> Data {
    try JSONEncoder().encode(self)
  }
}