import Foundation
import GenAPI

public struct RemasterModelMetaData: Equatable, Codable {
    public let name: String
    public let externalKey: String
    public let isDefaultModel: Bool

    public init(name: String, externalKey: String, isDefaultModel: Bool) {
        self.name = name
        self.externalKey = externalKey
        self.isDefaultModel = isDefaultModel
    }

    public var asJSONData: Data? {
        let encoder = JSONEncoder()
        return try? encoder.encode(self)
    }

    public static func fromData(_ data: Data?) -> RemasterModelMetaData? {
        guard let data else { return nil }
        let decoder = JSONDecoder()
        return try? decoder.decode(RemasterModelMetaData.self, from: data)
    }
}

public extension RemasterModelMetaData {
    init(_ remote: ExternalRemasterModelTypeSchema) {
        self.init(
            name: remote.name,
            externalKey: remote.externalKey,
            isDefaultModel: remote.isDefaultModel
        )
    }
}
