module Spotify.Types.Albums where

import Spotify.Types.Internal.CustomJSON
import Spotify.Types.Misc
import Spotify.Types.Simple

import Data.Aeson (FromJSON)
import Data.Text (Text)
import GHC.Generics (Generic)

data Album = Album
    { Album -> AlbumType
albumType :: AlbumType
    , Album -> [ArtistSimple]
artists :: [ArtistSimple]
    , Album -> Maybe [Text]
availableMarkets :: Maybe [Text]
    , Album -> [Copyright]
copyrights :: [Copyright]
    , Album -> ExternalIDs
externalIds :: ExternalIDs
    , Album -> ExternalURLs
externalUrls :: ExternalURLs
    , Album -> [Text]
genres :: [Text]
    , Album -> Href
href :: Href
    , Album -> AlbumID
id :: AlbumID
    , Album -> [Image]
images :: [Image]
    , Album -> Text
label :: Text
    , Album -> Text
name :: Text
    , Album -> Int
popularity :: Int
    , Album -> Text
releaseDate :: Text
    , Album -> DatePrecision
releaseDatePrecision :: DatePrecision
    , Album -> Maybe Restrictions
restrictions :: Maybe Restrictions
    , Album -> Paging TrackSimple
tracks :: Paging TrackSimple
    , Album -> URI
uri :: URI
    }
    deriving (Album -> Album -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Album -> Album -> Bool
$c/= :: Album -> Album -> Bool
== :: Album -> Album -> Bool
$c== :: Album -> Album -> Bool
Eq, Eq Album
Album -> Album -> Bool
Album -> Album -> Ordering
Album -> Album -> Album
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Album -> Album -> Album
$cmin :: Album -> Album -> Album
max :: Album -> Album -> Album
$cmax :: Album -> Album -> Album
>= :: Album -> Album -> Bool
$c>= :: Album -> Album -> Bool
> :: Album -> Album -> Bool
$c> :: Album -> Album -> Bool
<= :: Album -> Album -> Bool
$c<= :: Album -> Album -> Bool
< :: Album -> Album -> Bool
$c< :: Album -> Album -> Bool
compare :: Album -> Album -> Ordering
$ccompare :: Album -> Album -> Ordering
Ord, Int -> Album -> ShowS
[Album] -> ShowS
Album -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Album] -> ShowS
$cshowList :: [Album] -> ShowS
show :: Album -> String
$cshow :: Album -> String
showsPrec :: Int -> Album -> ShowS
$cshowsPrec :: Int -> Album -> ShowS
Show, forall x. Rep Album x -> Album
forall x. Album -> Rep Album x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Album x -> Album
$cfrom :: forall x. Album -> Rep Album x
Generic)
    deriving (Value -> Parser [Album]
Value -> Parser Album
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Album]
$cparseJSONList :: Value -> Parser [Album]
parseJSON :: Value -> Parser Album
$cparseJSON :: Value -> Parser Album
FromJSON) via CustomJSON Album