import Foundation
import GenAPI

public struct PlaylistsResult: Equatable {
    public var playlists: [Playlist]
    public let totalResults: Int

    init(_ remote: GenAPI.PlaylistsSchema) throws {
        self.playlists = try remote.playlists.map(Playlist.init)
        self.totalResults = remote.numTotalResults
    }

    // Used to determine if the source clip is in any of the playlists sent from the response
    public init(_ remote: GenAPI.PlaylistsWithTargetClipStatusSchema, clip: Clip?) throws {
        self.playlists = try remote.playlists.map { playlistSchema in
            try Playlist(playlistSchema as GenAPI.PlaylistMetadataWithTargetClipStatusSchema)
        }
        self.totalResults = remote.numTotalResults

        for (index, playlist) in playlists.enumerated() {
            if playlist.isAdded == true, let clip = clip {
                self.playlists[index].clips.append(clip)
            }
        }
    }
}
