import SwiftUI

struct SunoModelOverrideData: Codable {
    static let empty: SunoModelOverrideData = .init(overrideMap: [:])

    var overrideMap: [String: SunoModelMetaData] = [:]

    init(overrideMap: [String: SunoModelMetaData]) {
        self.overrideMap = overrideMap
    }

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

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