module WikiMusic.SSR.Free.View where

import Principium
import WikiMusic.Interaction.Model.Artist
import WikiMusic.Interaction.Model.Genre
import WikiMusic.Interaction.Model.Song

type View :: Type -> Type
data View a
  = ArtistListPage Limit Offset Env ViewVars GetArtistsQueryResponse (Html -> a)
  | ArtistDetailPage Env ViewVars GetArtistsQueryResponse (Html -> a)
  | ArtistCreatePage Env ViewVars (Html -> a)
  | ArtistEditPage Env ViewVars Artist (Html -> a)
  | GenreListPage Limit Offset Env ViewVars GetGenresQueryResponse (Html -> a)
  | GenreDetailPage Env ViewVars GetGenresQueryResponse (Html -> a)
  | GenreCreatePage Env ViewVars (Html -> a)
  | GenreEditPage Env ViewVars Genre (Html -> a)
  | SongListPage Limit Offset Env ViewVars GetSongsQueryResponse (Html -> a)
  | SongDetailPage Env ViewVars GetSongsQueryResponse (Html -> a)
  | SongCreatePage Env ViewVars (Html -> a)
  | SongEditPage Env ViewVars Song (Html -> a)
  | ErrorPage Env ViewVars (Maybe Int) (Maybe Text) (Html -> a)
  | LoginPage Env ViewVars (Html -> a)
  | RequestPasswordResetPage Env ViewVars (Html -> a)
  | DoPasswordResetPage Env ViewVars (Maybe Text) (Html -> a)
  | InviteUsersPage Env ViewVars (Html -> a)
  deriving ((forall a b. (a -> b) -> View a -> View b)
-> (forall a b. a -> View b -> View a) -> Functor View
forall a b. a -> View b -> View a
forall a b. (a -> b) -> View a -> View b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> View a -> View b
fmap :: forall a b. (a -> b) -> View a -> View b
$c<$ :: forall a b. a -> View b -> View a
<$ :: forall a b. a -> View b -> View a
Functor)

artistListPage :: (View :<: f) => Limit -> Offset -> Env -> ViewVars -> GetArtistsQueryResponse -> Free f Html
artistListPage :: forall (f :: * -> *).
(View :<: f) =>
Limit
-> Offset
-> Env
-> ViewVars
-> GetArtistsQueryResponse
-> Free f Html
artistListPage Limit
limit Offset
offset Env
env ViewVars
vv GetArtistsQueryResponse
artists = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Limit
-> Offset
-> Env
-> ViewVars
-> GetArtistsQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Limit
-> Offset
-> Env
-> ViewVars
-> GetArtistsQueryResponse
-> (Html -> a)
-> View a
ArtistListPage Limit
limit Offset
offset Env
env ViewVars
vv GetArtistsQueryResponse
artists Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

artistDetailPage :: (View :<: f) => Env -> ViewVars -> GetArtistsQueryResponse -> Free f Html
artistDetailPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> GetArtistsQueryResponse -> Free f Html
artistDetailPage Env
env ViewVars
vv GetArtistsQueryResponse
artists = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> GetArtistsQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Env -> ViewVars -> GetArtistsQueryResponse -> (Html -> a) -> View a
ArtistDetailPage Env
env ViewVars
vv GetArtistsQueryResponse
artists Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

artistCreatePage :: (View :<: f) => Env -> ViewVars -> Free f Html
artistCreatePage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
artistCreatePage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
ArtistCreatePage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

artistEditPage :: (View :<: f) => Env -> ViewVars -> Artist -> Free f Html
artistEditPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Artist -> Free f Html
artistEditPage Env
env ViewVars
vv Artist
artist = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> Artist
-> (Html -> Free f Html)
-> View (Free f Html)
forall a. Env -> ViewVars -> Artist -> (Html -> a) -> View a
ArtistEditPage Env
env ViewVars
vv Artist
artist Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

genreListPage :: (View :<: f) => Limit -> Offset -> Env -> ViewVars -> GetGenresQueryResponse -> Free f Html
genreListPage :: forall (f :: * -> *).
(View :<: f) =>
Limit
-> Offset
-> Env
-> ViewVars
-> GetGenresQueryResponse
-> Free f Html
genreListPage Limit
limit Offset
offset Env
env ViewVars
vv GetGenresQueryResponse
genres = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Limit
-> Offset
-> Env
-> ViewVars
-> GetGenresQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Limit
-> Offset
-> Env
-> ViewVars
-> GetGenresQueryResponse
-> (Html -> a)
-> View a
GenreListPage Limit
limit Offset
offset Env
env ViewVars
vv GetGenresQueryResponse
genres Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

genreDetailPage :: (View :<: f) => Env -> ViewVars -> GetGenresQueryResponse -> Free f Html
genreDetailPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> GetGenresQueryResponse -> Free f Html
genreDetailPage Env
env ViewVars
vv GetGenresQueryResponse
genres = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> GetGenresQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Env -> ViewVars -> GetGenresQueryResponse -> (Html -> a) -> View a
GenreDetailPage Env
env ViewVars
vv GetGenresQueryResponse
genres Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

genreCreatePage :: (View :<: f) => Env -> ViewVars -> Free f Html
genreCreatePage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
genreCreatePage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
GenreCreatePage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

genreEditPage :: (View :<: f) => Env -> ViewVars -> Genre -> Free f Html
genreEditPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Genre -> Free f Html
genreEditPage Env
env ViewVars
vv Genre
genre = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars -> Genre -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> Genre -> (Html -> a) -> View a
GenreEditPage Env
env ViewVars
vv Genre
genre Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

songListPage :: (View :<: f) => Limit -> Offset -> Env -> ViewVars -> GetSongsQueryResponse -> Free f Html
songListPage :: forall (f :: * -> *).
(View :<: f) =>
Limit
-> Offset
-> Env
-> ViewVars
-> GetSongsQueryResponse
-> Free f Html
songListPage Limit
limit Offset
offset Env
env ViewVars
vv GetSongsQueryResponse
songs = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Limit
-> Offset
-> Env
-> ViewVars
-> GetSongsQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Limit
-> Offset
-> Env
-> ViewVars
-> GetSongsQueryResponse
-> (Html -> a)
-> View a
SongListPage Limit
limit Offset
offset Env
env ViewVars
vv GetSongsQueryResponse
songs Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

songDetailPage :: (View :<: f) => Env -> ViewVars -> GetSongsQueryResponse -> Free f Html
songDetailPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> GetSongsQueryResponse -> Free f Html
songDetailPage Env
env ViewVars
vv GetSongsQueryResponse
songs = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> GetSongsQueryResponse
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Env -> ViewVars -> GetSongsQueryResponse -> (Html -> a) -> View a
SongDetailPage Env
env ViewVars
vv GetSongsQueryResponse
songs Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

songCreatePage :: (View :<: f) => Env -> ViewVars -> Free f Html
songCreatePage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
songCreatePage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
SongCreatePage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

songEditPage :: (View :<: f) => Env -> ViewVars -> Song -> Free f Html
songEditPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Song -> Free f Html
songEditPage Env
env ViewVars
vv Song
song = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars -> Song -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> Song -> (Html -> a) -> View a
SongEditPage Env
env ViewVars
vv Song
song Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

errorPage :: (View :<: f) => Env -> ViewVars -> Maybe Int -> Maybe Text -> Free f Html
errorPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Maybe Int -> Maybe Text -> Free f Html
errorPage Env
env ViewVars
vv Maybe Int
maybeCode Maybe Text
maybeMessage = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> Maybe Int
-> Maybe Text
-> (Html -> Free f Html)
-> View (Free f Html)
forall a.
Env -> ViewVars -> Maybe Int -> Maybe Text -> (Html -> a) -> View a
ErrorPage Env
env ViewVars
vv Maybe Int
maybeCode Maybe Text
maybeMessage Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

loginPage :: (View :<: f) => Env -> ViewVars -> Free f Html
loginPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
loginPage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
LoginPage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

requestPasswordResetPage :: (View :<: f) => Env -> ViewVars -> Free f Html
requestPasswordResetPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
requestPasswordResetPage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
RequestPasswordResetPage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

doPasswordResetPage :: (View :<: f) => Env -> ViewVars -> Maybe Text -> Free f Html
doPasswordResetPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Maybe Text -> Free f Html
doPasswordResetPage Env
env ViewVars
vv Maybe Text
t = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env
-> ViewVars
-> Maybe Text
-> (Html -> Free f Html)
-> View (Free f Html)
forall a. Env -> ViewVars -> Maybe Text -> (Html -> a) -> View a
DoPasswordResetPage Env
env ViewVars
vv Maybe Text
t Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)

inviteUsersPage :: (View :<: f) => Env -> ViewVars -> Free f Html
inviteUsersPage :: forall (f :: * -> *).
(View :<: f) =>
Env -> ViewVars -> Free f Html
inviteUsersPage Env
env ViewVars
vv = View (Free f Html) -> Free f Html
forall (g :: * -> *) (f :: * -> *) a.
(g :<: f) =>
g (Free f a) -> Free f a
injectFree (Env -> ViewVars -> (Html -> Free f Html) -> View (Free f Html)
forall a. Env -> ViewVars -> (Html -> a) -> View a
InviteUsersPage Env
env ViewVars
vv Html -> Free f Html
forall (f :: * -> *) a. a -> Free f a
Pure)