//
//  Model.swift
//  Model
//
//  Created by Vincent on 10/09/2021.
//

import Foundation

let apiKey = "da9bc8815fb0fc31d5ef6b3da097a009"

struct Movie: Decodable, Equatable, Identifiable {
    let id: Int
    let title: String
    let overview: String
    let posterPath: String
    var posterURL: URL {
        URL(string: "https://image.tmdb.org/t/p/w154/\(posterPath)")!
    }
}

struct MovieResponse: Decodable {
    let results: [Movie]
}

func loadMovies(page: Int = 1) async -> [Movie] {
    do {
        let url = URL(string: "https://api.themoviedb.org/3/movie/upcoming?api_key=\(apiKey)&language=en-US&page=\(page)")!
            
        let (data, _) = try await URLSession.shared.data(from: url)
            
        let decoder = JSONDecoder()
        decoder.keyDecodingStrategy = .convertFromSnakeCase
        
        let decoded = try decoder.decode(MovieResponse.self, from: data)
        
        return decoded.results
    } catch {
        return []
    }
}