import Foundation

/**
 `studio_api` returns dates that look like `2025-02-05T20:14:04.775Z`
 These formatters match that dateFormat and should be used whenever interacting with the API
 */

extension JSONDecoder.DateDecodingStrategy {
    static let iso8601WithFractionsFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSZ"
        return formatter
    }()

    static let iso8601WithFractions: JSONDecoder.DateDecodingStrategy = .formatted(iso8601WithFractionsFormatter)
}

extension JSONEncoder.DateEncodingStrategy {
    private static let iso8601WithFractionsFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSZ"
        return formatter
    }()

    static let iso8601WithFractions: JSONEncoder.DateEncodingStrategy = .formatted(iso8601WithFractionsFormatter)
}
