{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module WikiMusic.Servant.ApiSetup
  ( mkApp,
    PrivateAPI,
    PublicAPI,
    WikiMusicAPIServer,
    wiredUpPrivateServer,
    wiredUpPublicServer,
  )
where

import Data.OpenApi qualified
import Data.Proxy
import Data.Text (unpack)
import Data.Text qualified as T
import Database.Beam
import Database.SQLite.Simple qualified as Sqlite
import Network.Wai
import Network.Wai.Logger (ApacheLogger)
import Network.Wai.Middleware.Cors
import Network.Wai.Middleware.Prometheus qualified as P
import Network.Wai.Middleware.RequestLogger
import Prometheus qualified as P
import Prometheus.Metric.GHC qualified as P
import Relude
import Servant
import Servant.OpenApi
import WikiMusic.Model.Config
import WikiMusic.Model.Env
import WikiMusic.Protolude
import WikiMusic.Servant.ApiSpec
import WikiMusic.Servant.ArtistRoutes
import WikiMusic.Servant.AuthRoutes
import WikiMusic.Servant.GenreRoutes
import WikiMusic.Servant.SongRoutes
import WikiMusic.Servant.UserRoutes
import WikiMusic.Servant.Utilities

swagger :: Servant.Handler Data.OpenApi.OpenApi
swagger :: Handler OpenApi
swagger = OpenApi -> Handler OpenApi
forall a. a -> Handler a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (OpenApi -> Handler OpenApi) -> OpenApi -> Handler OpenApi
forall a b. (a -> b) -> a -> b
$ Proxy APIDocsServer -> OpenApi
forall {k} (api :: k). HasOpenApi api => Proxy api -> OpenApi
toOpenApi Proxy APIDocsServer
docsProxy

apiProxy :: Proxy WikiMusicAPIServer
apiProxy :: Proxy WikiMusicAPIServer
apiProxy = Proxy WikiMusicAPIServer
forall {k} (t :: k). Proxy t
Proxy

docsProxy :: Proxy APIDocsServer
docsProxy :: Proxy APIDocsServer
docsProxy = Proxy APIDocsServer
forall {k} (t :: k). Proxy t
Proxy

myCors :: CorsConfig -> Middleware
myCors :: CorsConfig -> Middleware
myCors CorsConfig
cfg = (Request -> Maybe CorsResourcePolicy) -> Middleware
cors (Maybe CorsResourcePolicy -> Request -> Maybe CorsResourcePolicy
forall a b. a -> b -> a
const (Maybe CorsResourcePolicy -> Request -> Maybe CorsResourcePolicy)
-> Maybe CorsResourcePolicy -> Request -> Maybe CorsResourcePolicy
forall a b. (a -> b) -> a -> b
$ CorsResourcePolicy -> Maybe CorsResourcePolicy
forall a. a -> Maybe a
Just CorsResourcePolicy
policy)
  where
    policy :: CorsResourcePolicy
policy =
      CorsResourcePolicy
        { corsOrigins :: Maybe ([Origin], Bool)
corsOrigins = ([Origin], Bool) -> Maybe ([Origin], Bool)
forall a. a -> Maybe a
Just ((Text -> Origin) -> [Text] -> [Origin]
forall a b. (a -> b) -> [a] -> [b]
map (String -> Origin
forall a. IsString a => String -> a
fromString (String -> Origin) -> (Text -> String) -> Text -> Origin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack) (CorsConfig
cfg CorsConfig -> Optic' A_Lens NoIx CorsConfig [Text] -> [Text]
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx CorsConfig [Text]
#origins), Bool
True),
          corsMethods :: [Origin]
corsMethods = (Text -> Origin) -> [Text] -> [Origin]
forall a b. (a -> b) -> [a] -> [b]
map (String -> Origin
forall a. IsString a => String -> a
fromString (String -> Origin) -> (Text -> String) -> Text -> Origin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack) (CorsConfig
cfg CorsConfig -> Optic' A_Lens NoIx CorsConfig [Text] -> [Text]
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx CorsConfig [Text]
#methods),
          corsRequestHeaders :: [HeaderName]
corsRequestHeaders = (Text -> HeaderName) -> [Text] -> [HeaderName]
forall a b. (a -> b) -> [a] -> [b]
map (String -> HeaderName
forall a. IsString a => String -> a
fromString (String -> HeaderName) -> (Text -> String) -> Text -> HeaderName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack) (CorsConfig
cfg CorsConfig -> Optic' A_Lens NoIx CorsConfig [Text] -> [Text]
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx CorsConfig [Text]
#requestHeaders),
          corsExposedHeaders :: Maybe [HeaderName]
corsExposedHeaders =
            [HeaderName] -> Maybe [HeaderName]
forall a. a -> Maybe a
Just
              [ HeaderName
"x-wikimusic-auth",
                HeaderName
"content-type",
                HeaderName
"date",
                HeaderName
"content-length",
                HeaderName
"access-control-allow-origin",
                HeaderName
"access-control-allow-methods",
                HeaderName
"access-control-allow-headers",
                HeaderName
"access-control-request-method",
                HeaderName
"access-control-request-headers"
              ],
          corsMaxAge :: Maybe Int
corsMaxAge = Maybe Int
forall a. Maybe a
Nothing,
          corsVaryOrigin :: Bool
corsVaryOrigin = Bool
False,
          corsRequireOrigin :: Bool
corsRequireOrigin = Bool
False,
          corsIgnoreFailures :: Bool
corsIgnoreFailures = Bool
False
        }

mkApp :: (MonadIO m) => ApacheLogger -> AppConfig -> m Application
mkApp :: forall (m :: * -> *).
MonadIO m =>
ApacheLogger -> AppConfig -> m Application
mkApp ApacheLogger
logger' AppConfig
cfg = do
  UTCTime
now <- IO UTCTime -> m UTCTime
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO UTCTime
getCurrentTime
  Connection
conn <- IO Connection -> m Connection
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Connection -> m Connection) -> IO Connection -> m Connection
forall a b. (a -> b) -> a -> b
$ String -> IO Connection
Sqlite.open (Text -> String
T.unpack (Text -> String) -> Text -> String
forall a b. (a -> b) -> a -> b
$ AppConfig
cfg AppConfig -> Optic' A_Lens NoIx AppConfig Text -> Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic A_Lens NoIx AppConfig AppConfig SqliteConfig SqliteConfig
#sqlite Optic A_Lens NoIx AppConfig AppConfig SqliteConfig SqliteConfig
-> Optic A_Lens NoIx SqliteConfig SqliteConfig Text Text
-> Optic' A_Lens NoIx AppConfig Text
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic A_Lens NoIx SqliteConfig SqliteConfig Text Text
#path)
  Origin
mailCss <- IO Origin -> m Origin
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Origin -> m Origin) -> IO Origin -> m Origin
forall a b. (a -> b) -> a -> b
$ String -> IO Origin
forall (m :: * -> *). MonadIO m => String -> m Origin
readFileBS String
"resources/css/mail.css"

  let env :: Env
env =
        Env
          { $sel:cfg:Env :: AppConfig
cfg = AppConfig
cfg,
            $sel:processStartedAt:Env :: UTCTime
processStartedAt = UTCTime
now,
            $sel:logger:Env :: ApacheLogger
logger = ApacheLogger
logger',
            $sel:conn:Env :: Connection
conn = Connection
conn,
            $sel:mailCss:Env :: Text
mailCss = (Char -> Bool) -> Text -> Text
T.filter (\Char
x -> Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'\n' Bool -> Bool -> Bool
&& Char
x Char -> Char -> Bool
forall a. Eq a => a -> a -> Bool
/= Char
'\t') (Text -> Text) -> (Origin -> Text) -> Origin -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Origin -> Text
forall a b. ConvertUtf8 a b => b -> a
decodeUtf8 (Origin -> Text) -> Origin -> Text
forall a b. (a -> b) -> a -> b
$ Origin
mailCss
          }
      authCfg :: Text -> IO (Maybe WikiMusicUser)
authCfg = Env -> Text -> IO (Maybe WikiMusicUser)
authCheckIO Env
env
      apiCfg :: Context ((Text -> IO (Maybe WikiMusicUser)) : NoIx)
apiCfg = Text -> IO (Maybe WikiMusicUser)
authCfg (Text -> IO (Maybe WikiMusicUser))
-> Context NoIx
-> Context ((Text -> IO (Maybe WikiMusicUser)) : NoIx)
forall x (xs :: IxList). x -> Context xs -> Context (x : xs)
:. Context NoIx
EmptyContext
      apiItself :: ((((Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ()))))
  :<|> ((Maybe Text
         -> Maybe Int
         -> Maybe Int
         -> Maybe Text
         -> Maybe Text
         -> Handler GetArtistsQueryResponse)
        :<|> ((Maybe Text
               -> Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetArtistsQueryResponse)
              :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                    :<|> ((Maybe Text
                           -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                          :<|> ((Maybe Text
                                 -> InsertArtistCommentsRequest
                                 -> Handler InsertArtistCommentsCommandResponse)
                                :<|> ((Maybe Text
                                       -> UpsertArtistOpinionsRequest
                                       -> Handler UpsertArtistOpinionsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertArtistArtworksRequest
                                             -> Handler InsertArtistArtworksCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                                  :<|> (Maybe Text
                                                        -> ArtistDeltaRequest
                                                        -> Handler ()))))))))))
 :<|> ((((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> (Maybe Text -> UUID -> Handler ()))))
        :<|> ((Maybe Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetGenresQueryResponse)
              :<|> ((Maybe Text
                     -> Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetGenresQueryResponse)
                    :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                          :<|> ((Maybe Text
                                 -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                                :<|> ((Maybe Text
                                       -> InsertGenreCommentsRequest
                                       -> Handler InsertGenreCommentsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> UpsertGenreOpinionsRequest
                                             -> Handler UpsertGenreOpinionsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> InsertGenreArtworksRequest
                                                   -> Handler InsertGenreArtworksCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> GenreArtworkOrderUpdateRequest
                                                         -> Handler ())
                                                        :<|> (Maybe Text
                                                              -> GenreDeltaRequest
                                                              -> Handler ()))))))))))
       :<|> ((((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> ((Maybe Text -> UUID -> Handler ())
                           :<|> (Maybe Text -> UUID -> Handler ()))))
              :<|> ((Maybe Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetSongsQueryResponse)
                    :<|> ((Maybe Text
                           -> Text
                           -> Maybe Int
                           -> Maybe Int
                           -> Maybe Text
                           -> Maybe Text
                           -> Handler GetSongsQueryResponse)
                          :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                                :<|> ((Maybe Text
                                       -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertSongCommentsRequest
                                             -> Handler InsertSongCommentsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> UpsertSongOpinionsRequest
                                                   -> Handler UpsertSongOpinionsCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> InsertSongArtworksRequest
                                                         -> Handler
                                                              InsertSongArtworksCommandResponse)
                                                        :<|> ((Maybe Text
                                                               -> InsertArtistsOfSongsRequest
                                                               -> Handler
                                                                    InsertArtistsOfSongCommandResponse)
                                                              :<|> ((Maybe Text
                                                                     -> InsertArtistsOfSongsRequest
                                                                     -> Handler ())
                                                                    :<|> ((Maybe Text
                                                                           -> SongArtworkOrderUpdateRequest
                                                                           -> Handler ())
                                                                          :<|> ((Maybe Text
                                                                                 -> SongDeltaRequest
                                                                                 -> Handler ())
                                                                                :<|> ((Maybe Text
                                                                                       -> InsertSongContentsRequest
                                                                                       -> Handler
                                                                                            InsertSongContentsCommandResponse)
                                                                                      :<|> ((Maybe
                                                                                               Text
                                                                                             -> UUID
                                                                                             -> Handler
                                                                                                  ())
                                                                                            :<|> (Maybe
                                                                                                    Text
                                                                                                  -> SongContentDeltaRequest
                                                                                                  -> Handler
                                                                                                       ())))))))))))))))
             :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                   :<|> ((Maybe Text
                          -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                         :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))))
:<|> (Handler OpenApi
      :<|> ((LoginRequest
             -> Handler (Headers (WithAuth : NoIx) NoContent))
            :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
                   :<|> (DoPasswordResetRequest -> Handler ()))
                  :<|> Handler SystemInformationResponse)))
apiItself =
        Env
-> Server
     (ArtistsAPI :<|> (GenresAPI :<|> (SongsAPI :<|> AuthAPI)))
wiredUpPrivateServer Env
env
          ((((Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ()))))
  :<|> ((Maybe Text
         -> Maybe Int
         -> Maybe Int
         -> Maybe Text
         -> Maybe Text
         -> Handler GetArtistsQueryResponse)
        :<|> ((Maybe Text
               -> Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetArtistsQueryResponse)
              :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                    :<|> ((Maybe Text
                           -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                          :<|> ((Maybe Text
                                 -> InsertArtistCommentsRequest
                                 -> Handler InsertArtistCommentsCommandResponse)
                                :<|> ((Maybe Text
                                       -> UpsertArtistOpinionsRequest
                                       -> Handler UpsertArtistOpinionsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertArtistArtworksRequest
                                             -> Handler InsertArtistArtworksCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                                  :<|> (Maybe Text
                                                        -> ArtistDeltaRequest
                                                        -> Handler ()))))))))))
 :<|> ((((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> (Maybe Text -> UUID -> Handler ()))))
        :<|> ((Maybe Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetGenresQueryResponse)
              :<|> ((Maybe Text
                     -> Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetGenresQueryResponse)
                    :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                          :<|> ((Maybe Text
                                 -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                                :<|> ((Maybe Text
                                       -> InsertGenreCommentsRequest
                                       -> Handler InsertGenreCommentsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> UpsertGenreOpinionsRequest
                                             -> Handler UpsertGenreOpinionsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> InsertGenreArtworksRequest
                                                   -> Handler InsertGenreArtworksCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> GenreArtworkOrderUpdateRequest
                                                         -> Handler ())
                                                        :<|> (Maybe Text
                                                              -> GenreDeltaRequest
                                                              -> Handler ()))))))))))
       :<|> ((((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> ((Maybe Text -> UUID -> Handler ())
                           :<|> (Maybe Text -> UUID -> Handler ()))))
              :<|> ((Maybe Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetSongsQueryResponse)
                    :<|> ((Maybe Text
                           -> Text
                           -> Maybe Int
                           -> Maybe Int
                           -> Maybe Text
                           -> Maybe Text
                           -> Handler GetSongsQueryResponse)
                          :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                                :<|> ((Maybe Text
                                       -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertSongCommentsRequest
                                             -> Handler InsertSongCommentsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> UpsertSongOpinionsRequest
                                                   -> Handler UpsertSongOpinionsCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> InsertSongArtworksRequest
                                                         -> Handler
                                                              InsertSongArtworksCommandResponse)
                                                        :<|> ((Maybe Text
                                                               -> InsertArtistsOfSongsRequest
                                                               -> Handler
                                                                    InsertArtistsOfSongCommandResponse)
                                                              :<|> ((Maybe Text
                                                                     -> InsertArtistsOfSongsRequest
                                                                     -> Handler ())
                                                                    :<|> ((Maybe Text
                                                                           -> SongArtworkOrderUpdateRequest
                                                                           -> Handler ())
                                                                          :<|> ((Maybe Text
                                                                                 -> SongDeltaRequest
                                                                                 -> Handler ())
                                                                                :<|> ((Maybe Text
                                                                                       -> InsertSongContentsRequest
                                                                                       -> Handler
                                                                                            InsertSongContentsCommandResponse)
                                                                                      :<|> ((Maybe
                                                                                               Text
                                                                                             -> UUID
                                                                                             -> Handler
                                                                                                  ())
                                                                                            :<|> (Maybe
                                                                                                    Text
                                                                                                  -> SongContentDeltaRequest
                                                                                                  -> Handler
                                                                                                       ())))))))))))))))
             :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                   :<|> ((Maybe Text
                          -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                         :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))))
-> (Handler OpenApi
    :<|> ((LoginRequest
           -> Handler (Headers (WithAuth : NoIx) NoContent))
          :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
                 :<|> (DoPasswordResetRequest -> Handler ()))
                :<|> Handler SystemInformationResponse)))
-> ((((Maybe Text -> UUID -> Handler ())
      :<|> ((Maybe Text -> UUID -> Handler ())
            :<|> ((Maybe Text -> UUID -> Handler ())
                  :<|> (Maybe Text -> UUID -> Handler ()))))
     :<|> ((Maybe Text
            -> Maybe Int
            -> Maybe Int
            -> Maybe Text
            -> Maybe Text
            -> Handler GetArtistsQueryResponse)
           :<|> ((Maybe Text
                  -> Text
                  -> Maybe Int
                  -> Maybe Int
                  -> Maybe Text
                  -> Maybe Text
                  -> Handler GetArtistsQueryResponse)
                 :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                       :<|> ((Maybe Text
                              -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                             :<|> ((Maybe Text
                                    -> InsertArtistCommentsRequest
                                    -> Handler InsertArtistCommentsCommandResponse)
                                   :<|> ((Maybe Text
                                          -> UpsertArtistOpinionsRequest
                                          -> Handler UpsertArtistOpinionsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> InsertArtistArtworksRequest
                                                -> Handler InsertArtistArtworksCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> ArtistArtworkOrderUpdateRequest
                                                      -> Handler ())
                                                     :<|> (Maybe Text
                                                           -> ArtistDeltaRequest
                                                           -> Handler ()))))))))))
    :<|> ((((Maybe Text -> UUID -> Handler ())
            :<|> ((Maybe Text -> UUID -> Handler ())
                  :<|> ((Maybe Text -> UUID -> Handler ())
                        :<|> (Maybe Text -> UUID -> Handler ()))))
           :<|> ((Maybe Text
                  -> Maybe Int
                  -> Maybe Int
                  -> Maybe Text
                  -> Maybe Text
                  -> Handler GetGenresQueryResponse)
                 :<|> ((Maybe Text
                        -> Text
                        -> Maybe Int
                        -> Maybe Int
                        -> Maybe Text
                        -> Maybe Text
                        -> Handler GetGenresQueryResponse)
                       :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                             :<|> ((Maybe Text
                                    -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                                   :<|> ((Maybe Text
                                          -> InsertGenreCommentsRequest
                                          -> Handler InsertGenreCommentsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> UpsertGenreOpinionsRequest
                                                -> Handler UpsertGenreOpinionsCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> InsertGenreArtworksRequest
                                                      -> Handler InsertGenreArtworksCommandResponse)
                                                     :<|> ((Maybe Text
                                                            -> GenreArtworkOrderUpdateRequest
                                                            -> Handler ())
                                                           :<|> (Maybe Text
                                                                 -> GenreDeltaRequest
                                                                 -> Handler ()))))))))))
          :<|> ((((Maybe Text -> UUID -> Handler ())
                  :<|> ((Maybe Text -> UUID -> Handler ())
                        :<|> ((Maybe Text -> UUID -> Handler ())
                              :<|> (Maybe Text -> UUID -> Handler ()))))
                 :<|> ((Maybe Text
                        -> Maybe Int
                        -> Maybe Int
                        -> Maybe Text
                        -> Maybe Text
                        -> Handler GetSongsQueryResponse)
                       :<|> ((Maybe Text
                              -> Text
                              -> Maybe Int
                              -> Maybe Int
                              -> Maybe Text
                              -> Maybe Text
                              -> Handler GetSongsQueryResponse)
                             :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                                   :<|> ((Maybe Text
                                          -> InsertSongsRequest
                                          -> Handler InsertSongsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> InsertSongCommentsRequest
                                                -> Handler InsertSongCommentsCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> UpsertSongOpinionsRequest
                                                      -> Handler UpsertSongOpinionsCommandResponse)
                                                     :<|> ((Maybe Text
                                                            -> InsertSongArtworksRequest
                                                            -> Handler
                                                                 InsertSongArtworksCommandResponse)
                                                           :<|> ((Maybe Text
                                                                  -> InsertArtistsOfSongsRequest
                                                                  -> Handler
                                                                       InsertArtistsOfSongCommandResponse)
                                                                 :<|> ((Maybe Text
                                                                        -> InsertArtistsOfSongsRequest
                                                                        -> Handler ())
                                                                       :<|> ((Maybe Text
                                                                              -> SongArtworkOrderUpdateRequest
                                                                              -> Handler ())
                                                                             :<|> ((Maybe Text
                                                                                    -> SongDeltaRequest
                                                                                    -> Handler ())
                                                                                   :<|> ((Maybe Text
                                                                                          -> InsertSongContentsRequest
                                                                                          -> Handler
                                                                                               InsertSongContentsCommandResponse)
                                                                                         :<|> ((Maybe
                                                                                                  Text
                                                                                                -> UUID
                                                                                                -> Handler
                                                                                                     ())
                                                                                               :<|> (Maybe
                                                                                                       Text
                                                                                                     -> SongContentDeltaRequest
                                                                                                     -> Handler
                                                                                                          ())))))))))))))))
                :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                      :<|> ((Maybe Text
                             -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                            :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))))
   :<|> (Handler OpenApi
         :<|> ((LoginRequest
                -> Handler (Headers (WithAuth : NoIx) NoContent))
               :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
                      :<|> (DoPasswordResetRequest -> Handler ()))
                     :<|> Handler SystemInformationResponse)))
forall a b. a -> b -> a :<|> b
:<|> ( Handler OpenApi
swagger
                   Handler OpenApi
-> ((LoginRequest -> Handler (Headers (WithAuth : NoIx) NoContent))
    :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
           :<|> (DoPasswordResetRequest -> Handler ()))
          :<|> Handler SystemInformationResponse))
-> Handler OpenApi
   :<|> ((LoginRequest
          -> Handler (Headers (WithAuth : NoIx) NoContent))
         :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
                :<|> (DoPasswordResetRequest -> Handler ()))
               :<|> Handler SystemInformationResponse))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Server
     (("login"
       :> (ReqBody (JSON : NoIx) LoginRequest :> LoginRespondWithAuth))
      :<|> (("reset-password"
             :> (("email"
                  :> (Capture "email" Text
                      :> Post (JSON : NoIx) MakeResetPasswordLinkResponse))
                 :<|> ("do"
                       :> (ReqBody (JSON : NoIx) DoPasswordResetRequest
                           :> Verb 'POST 204 (JSON : NoIx) ()))))
            :<|> ("system-information"
                  :> Get (JSON : NoIx) SystemInformationResponse)))
wiredUpPublicServer Env
env
               )

  Application -> m Application
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure
    (Application -> m Application)
-> Middleware -> Application -> m Application
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (if (AppConfig
cfg AppConfig -> Optic' A_Lens NoIx AppConfig Text -> Text
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic A_Lens NoIx AppConfig AppConfig DevConfig DevConfig
#dev Optic A_Lens NoIx AppConfig AppConfig DevConfig DevConfig
-> Optic An_Iso NoIx DevConfig DevConfig Text Text
-> Optic' A_Lens NoIx AppConfig Text
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic An_Iso NoIx DevConfig DevConfig Text Text
#reportedVersion) Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== Text
"dev" then Middleware
logStdoutDev else Middleware
logStdout)
    Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CorsConfig -> Middleware
myCors (AppConfig
cfg AppConfig -> Optic' A_Lens NoIx AppConfig CorsConfig -> CorsConfig
forall k s (is :: IxList) a.
Is k A_Getter =>
s -> Optic' k is s a -> a
^. Optic' A_Lens NoIx AppConfig CorsConfig
#cors)
    Middleware -> Middleware -> Middleware
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PrometheusSettings -> Middleware
P.prometheus PrometheusSettings
forall a. Default a => a
P.def
    (Application -> m Application) -> Application -> m Application
forall a b. (a -> b) -> a -> b
$ Proxy WikiMusicAPIServer
-> Context ((Text -> IO (Maybe WikiMusicUser)) : NoIx)
-> Server WikiMusicAPIServer
-> Application
forall {k} (api :: k) (context :: IxList).
(HasServer api context, ServerContext context) =>
Proxy api -> Context context -> Server api -> Application
serveWithContext Proxy WikiMusicAPIServer
apiProxy Context ((Text -> IO (Maybe WikiMusicUser)) : NoIx)
apiCfg ((((Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ()))))
  :<|> ((Maybe Text
         -> Maybe Int
         -> Maybe Int
         -> Maybe Text
         -> Maybe Text
         -> Handler GetArtistsQueryResponse)
        :<|> ((Maybe Text
               -> Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetArtistsQueryResponse)
              :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                    :<|> ((Maybe Text
                           -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                          :<|> ((Maybe Text
                                 -> InsertArtistCommentsRequest
                                 -> Handler InsertArtistCommentsCommandResponse)
                                :<|> ((Maybe Text
                                       -> UpsertArtistOpinionsRequest
                                       -> Handler UpsertArtistOpinionsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertArtistArtworksRequest
                                             -> Handler InsertArtistArtworksCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                                  :<|> (Maybe Text
                                                        -> ArtistDeltaRequest
                                                        -> Handler ()))))))))))
 :<|> ((((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> (Maybe Text -> UUID -> Handler ()))))
        :<|> ((Maybe Text
               -> Maybe Int
               -> Maybe Int
               -> Maybe Text
               -> Maybe Text
               -> Handler GetGenresQueryResponse)
              :<|> ((Maybe Text
                     -> Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetGenresQueryResponse)
                    :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                          :<|> ((Maybe Text
                                 -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                                :<|> ((Maybe Text
                                       -> InsertGenreCommentsRequest
                                       -> Handler InsertGenreCommentsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> UpsertGenreOpinionsRequest
                                             -> Handler UpsertGenreOpinionsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> InsertGenreArtworksRequest
                                                   -> Handler InsertGenreArtworksCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> GenreArtworkOrderUpdateRequest
                                                         -> Handler ())
                                                        :<|> (Maybe Text
                                                              -> GenreDeltaRequest
                                                              -> Handler ()))))))))))
       :<|> ((((Maybe Text -> UUID -> Handler ())
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> ((Maybe Text -> UUID -> Handler ())
                           :<|> (Maybe Text -> UUID -> Handler ()))))
              :<|> ((Maybe Text
                     -> Maybe Int
                     -> Maybe Int
                     -> Maybe Text
                     -> Maybe Text
                     -> Handler GetSongsQueryResponse)
                    :<|> ((Maybe Text
                           -> Text
                           -> Maybe Int
                           -> Maybe Int
                           -> Maybe Text
                           -> Maybe Text
                           -> Handler GetSongsQueryResponse)
                          :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                                :<|> ((Maybe Text
                                       -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                                      :<|> ((Maybe Text
                                             -> InsertSongCommentsRequest
                                             -> Handler InsertSongCommentsCommandResponse)
                                            :<|> ((Maybe Text
                                                   -> UpsertSongOpinionsRequest
                                                   -> Handler UpsertSongOpinionsCommandResponse)
                                                  :<|> ((Maybe Text
                                                         -> InsertSongArtworksRequest
                                                         -> Handler
                                                              InsertSongArtworksCommandResponse)
                                                        :<|> ((Maybe Text
                                                               -> InsertArtistsOfSongsRequest
                                                               -> Handler
                                                                    InsertArtistsOfSongCommandResponse)
                                                              :<|> ((Maybe Text
                                                                     -> InsertArtistsOfSongsRequest
                                                                     -> Handler ())
                                                                    :<|> ((Maybe Text
                                                                           -> SongArtworkOrderUpdateRequest
                                                                           -> Handler ())
                                                                          :<|> ((Maybe Text
                                                                                 -> SongDeltaRequest
                                                                                 -> Handler ())
                                                                                :<|> ((Maybe Text
                                                                                       -> InsertSongContentsRequest
                                                                                       -> Handler
                                                                                            InsertSongContentsCommandResponse)
                                                                                      :<|> ((Maybe
                                                                                               Text
                                                                                             -> UUID
                                                                                             -> Handler
                                                                                                  ())
                                                                                            :<|> (Maybe
                                                                                                    Text
                                                                                                  -> SongContentDeltaRequest
                                                                                                  -> Handler
                                                                                                       ())))))))))))))))
             :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                   :<|> ((Maybe Text
                          -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                         :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))))
:<|> (Handler OpenApi
      :<|> ((LoginRequest
             -> Handler (Headers (WithAuth : NoIx) NoContent))
            :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
                   :<|> (DoPasswordResetRequest -> Handler ()))
                  :<|> Handler SystemInformationResponse)))
Server WikiMusicAPIServer
apiItself

wiredUpPrivateServer :: Env -> Server PrivateAPI
wiredUpPrivateServer :: Env
-> Server
     (ArtistsAPI :<|> (GenresAPI :<|> (SongsAPI :<|> AuthAPI)))
wiredUpPrivateServer Env
env =
  Env -> Server ArtistsAPI
artistHandlers Env
env (((Maybe Text -> UUID -> Handler ())
  :<|> ((Maybe Text -> UUID -> Handler ())
        :<|> ((Maybe Text -> UUID -> Handler ())
              :<|> (Maybe Text -> UUID -> Handler ()))))
 :<|> ((Maybe Text
        -> Maybe Int
        -> Maybe Int
        -> Maybe Text
        -> Maybe Text
        -> Handler GetArtistsQueryResponse)
       :<|> ((Maybe Text
              -> Text
              -> Maybe Int
              -> Maybe Int
              -> Maybe Text
              -> Maybe Text
              -> Handler GetArtistsQueryResponse)
             :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                   :<|> ((Maybe Text
                          -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                         :<|> ((Maybe Text
                                -> InsertArtistCommentsRequest
                                -> Handler InsertArtistCommentsCommandResponse)
                               :<|> ((Maybe Text
                                      -> UpsertArtistOpinionsRequest
                                      -> Handler UpsertArtistOpinionsCommandResponse)
                                     :<|> ((Maybe Text
                                            -> InsertArtistArtworksRequest
                                            -> Handler InsertArtistArtworksCommandResponse)
                                           :<|> ((Maybe Text
                                                  -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                                 :<|> (Maybe Text
                                                       -> ArtistDeltaRequest -> Handler ()))))))))))
-> ((((Maybe Text -> UUID -> Handler ())
      :<|> ((Maybe Text -> UUID -> Handler ())
            :<|> ((Maybe Text -> UUID -> Handler ())
                  :<|> (Maybe Text -> UUID -> Handler ()))))
     :<|> ((Maybe Text
            -> Maybe Int
            -> Maybe Int
            -> Maybe Text
            -> Maybe Text
            -> Handler GetGenresQueryResponse)
           :<|> ((Maybe Text
                  -> Text
                  -> Maybe Int
                  -> Maybe Int
                  -> Maybe Text
                  -> Maybe Text
                  -> Handler GetGenresQueryResponse)
                 :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                       :<|> ((Maybe Text
                              -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                             :<|> ((Maybe Text
                                    -> InsertGenreCommentsRequest
                                    -> Handler InsertGenreCommentsCommandResponse)
                                   :<|> ((Maybe Text
                                          -> UpsertGenreOpinionsRequest
                                          -> Handler UpsertGenreOpinionsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> InsertGenreArtworksRequest
                                                -> Handler InsertGenreArtworksCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> GenreArtworkOrderUpdateRequest
                                                      -> Handler ())
                                                     :<|> (Maybe Text
                                                           -> GenreDeltaRequest
                                                           -> Handler ()))))))))))
    :<|> ((((Maybe Text -> UUID -> Handler ())
            :<|> ((Maybe Text -> UUID -> Handler ())
                  :<|> ((Maybe Text -> UUID -> Handler ())
                        :<|> (Maybe Text -> UUID -> Handler ()))))
           :<|> ((Maybe Text
                  -> Maybe Int
                  -> Maybe Int
                  -> Maybe Text
                  -> Maybe Text
                  -> Handler GetSongsQueryResponse)
                 :<|> ((Maybe Text
                        -> Text
                        -> Maybe Int
                        -> Maybe Int
                        -> Maybe Text
                        -> Maybe Text
                        -> Handler GetSongsQueryResponse)
                       :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                             :<|> ((Maybe Text
                                    -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                                   :<|> ((Maybe Text
                                          -> InsertSongCommentsRequest
                                          -> Handler InsertSongCommentsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> UpsertSongOpinionsRequest
                                                -> Handler UpsertSongOpinionsCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> InsertSongArtworksRequest
                                                      -> Handler InsertSongArtworksCommandResponse)
                                                     :<|> ((Maybe Text
                                                            -> InsertArtistsOfSongsRequest
                                                            -> Handler
                                                                 InsertArtistsOfSongCommandResponse)
                                                           :<|> ((Maybe Text
                                                                  -> InsertArtistsOfSongsRequest
                                                                  -> Handler ())
                                                                 :<|> ((Maybe Text
                                                                        -> SongArtworkOrderUpdateRequest
                                                                        -> Handler ())
                                                                       :<|> ((Maybe Text
                                                                              -> SongDeltaRequest
                                                                              -> Handler ())
                                                                             :<|> ((Maybe Text
                                                                                    -> InsertSongContentsRequest
                                                                                    -> Handler
                                                                                         InsertSongContentsCommandResponse)
                                                                                   :<|> ((Maybe Text
                                                                                          -> UUID
                                                                                          -> Handler
                                                                                               ())
                                                                                         :<|> (Maybe
                                                                                                 Text
                                                                                               -> SongContentDeltaRequest
                                                                                               -> Handler
                                                                                                    ())))))))))))))))
          :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                :<|> ((Maybe Text
                       -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                      :<|> (Maybe Text -> DeleteUsersRequest -> Handler ())))))
-> (((Maybe Text -> UUID -> Handler ())
     :<|> ((Maybe Text -> UUID -> Handler ())
           :<|> ((Maybe Text -> UUID -> Handler ())
                 :<|> (Maybe Text -> UUID -> Handler ()))))
    :<|> ((Maybe Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetArtistsQueryResponse)
          :<|> ((Maybe Text
                 -> Text
                 -> Maybe Int
                 -> Maybe Int
                 -> Maybe Text
                 -> Maybe Text
                 -> Handler GetArtistsQueryResponse)
                :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                      :<|> ((Maybe Text
                             -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertArtistCommentsRequest
                                   -> Handler InsertArtistCommentsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> UpsertArtistOpinionsRequest
                                         -> Handler UpsertArtistOpinionsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertArtistArtworksRequest
                                               -> Handler InsertArtistArtworksCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> ArtistArtworkOrderUpdateRequest
                                                     -> Handler ())
                                                    :<|> (Maybe Text
                                                          -> ArtistDeltaRequest
                                                          -> Handler ()))))))))))
   :<|> ((((Maybe Text -> UUID -> Handler ())
           :<|> ((Maybe Text -> UUID -> Handler ())
                 :<|> ((Maybe Text -> UUID -> Handler ())
                       :<|> (Maybe Text -> UUID -> Handler ()))))
          :<|> ((Maybe Text
                 -> Maybe Int
                 -> Maybe Int
                 -> Maybe Text
                 -> Maybe Text
                 -> Handler GetGenresQueryResponse)
                :<|> ((Maybe Text
                       -> Text
                       -> Maybe Int
                       -> Maybe Int
                       -> Maybe Text
                       -> Maybe Text
                       -> Handler GetGenresQueryResponse)
                      :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                            :<|> ((Maybe Text
                                   -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertGenreCommentsRequest
                                         -> Handler InsertGenreCommentsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> UpsertGenreOpinionsRequest
                                               -> Handler UpsertGenreOpinionsCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> InsertGenreArtworksRequest
                                                     -> Handler InsertGenreArtworksCommandResponse)
                                                    :<|> ((Maybe Text
                                                           -> GenreArtworkOrderUpdateRequest
                                                           -> Handler ())
                                                          :<|> (Maybe Text
                                                                -> GenreDeltaRequest
                                                                -> Handler ()))))))))))
         :<|> ((((Maybe Text -> UUID -> Handler ())
                 :<|> ((Maybe Text -> UUID -> Handler ())
                       :<|> ((Maybe Text -> UUID -> Handler ())
                             :<|> (Maybe Text -> UUID -> Handler ()))))
                :<|> ((Maybe Text
                       -> Maybe Int
                       -> Maybe Int
                       -> Maybe Text
                       -> Maybe Text
                       -> Handler GetSongsQueryResponse)
                      :<|> ((Maybe Text
                             -> Text
                             -> Maybe Int
                             -> Maybe Int
                             -> Maybe Text
                             -> Maybe Text
                             -> Handler GetSongsQueryResponse)
                            :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                                  :<|> ((Maybe Text
                                         -> InsertSongsRequest
                                         -> Handler InsertSongsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertSongCommentsRequest
                                               -> Handler InsertSongCommentsCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> UpsertSongOpinionsRequest
                                                     -> Handler UpsertSongOpinionsCommandResponse)
                                                    :<|> ((Maybe Text
                                                           -> InsertSongArtworksRequest
                                                           -> Handler
                                                                InsertSongArtworksCommandResponse)
                                                          :<|> ((Maybe Text
                                                                 -> InsertArtistsOfSongsRequest
                                                                 -> Handler
                                                                      InsertArtistsOfSongCommandResponse)
                                                                :<|> ((Maybe Text
                                                                       -> InsertArtistsOfSongsRequest
                                                                       -> Handler ())
                                                                      :<|> ((Maybe Text
                                                                             -> SongArtworkOrderUpdateRequest
                                                                             -> Handler ())
                                                                            :<|> ((Maybe Text
                                                                                   -> SongDeltaRequest
                                                                                   -> Handler ())
                                                                                  :<|> ((Maybe Text
                                                                                         -> InsertSongContentsRequest
                                                                                         -> Handler
                                                                                              InsertSongContentsCommandResponse)
                                                                                        :<|> ((Maybe
                                                                                                 Text
                                                                                               -> UUID
                                                                                               -> Handler
                                                                                                    ())
                                                                                              :<|> (Maybe
                                                                                                      Text
                                                                                                    -> SongContentDeltaRequest
                                                                                                    -> Handler
                                                                                                         ())))))))))))))))
               :<|> ((Maybe Text -> Handler GetMeQueryResponse)
                     :<|> ((Maybe Text
                            -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                           :<|> (Maybe Text -> DeleteUsersRequest -> Handler ())))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Server GenresAPI
genreHandlers Env
env (((Maybe Text -> UUID -> Handler ())
  :<|> ((Maybe Text -> UUID -> Handler ())
        :<|> ((Maybe Text -> UUID -> Handler ())
              :<|> (Maybe Text -> UUID -> Handler ()))))
 :<|> ((Maybe Text
        -> Maybe Int
        -> Maybe Int
        -> Maybe Text
        -> Maybe Text
        -> Handler GetGenresQueryResponse)
       :<|> ((Maybe Text
              -> Text
              -> Maybe Int
              -> Maybe Int
              -> Maybe Text
              -> Maybe Text
              -> Handler GetGenresQueryResponse)
             :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                   :<|> ((Maybe Text
                          -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                         :<|> ((Maybe Text
                                -> InsertGenreCommentsRequest
                                -> Handler InsertGenreCommentsCommandResponse)
                               :<|> ((Maybe Text
                                      -> UpsertGenreOpinionsRequest
                                      -> Handler UpsertGenreOpinionsCommandResponse)
                                     :<|> ((Maybe Text
                                            -> InsertGenreArtworksRequest
                                            -> Handler InsertGenreArtworksCommandResponse)
                                           :<|> ((Maybe Text
                                                  -> GenreArtworkOrderUpdateRequest -> Handler ())
                                                 :<|> (Maybe Text
                                                       -> GenreDeltaRequest -> Handler ()))))))))))
-> ((((Maybe Text -> UUID -> Handler ())
      :<|> ((Maybe Text -> UUID -> Handler ())
            :<|> ((Maybe Text -> UUID -> Handler ())
                  :<|> (Maybe Text -> UUID -> Handler ()))))
     :<|> ((Maybe Text
            -> Maybe Int
            -> Maybe Int
            -> Maybe Text
            -> Maybe Text
            -> Handler GetSongsQueryResponse)
           :<|> ((Maybe Text
                  -> Text
                  -> Maybe Int
                  -> Maybe Int
                  -> Maybe Text
                  -> Maybe Text
                  -> Handler GetSongsQueryResponse)
                 :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                       :<|> ((Maybe Text
                              -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                             :<|> ((Maybe Text
                                    -> InsertSongCommentsRequest
                                    -> Handler InsertSongCommentsCommandResponse)
                                   :<|> ((Maybe Text
                                          -> UpsertSongOpinionsRequest
                                          -> Handler UpsertSongOpinionsCommandResponse)
                                         :<|> ((Maybe Text
                                                -> InsertSongArtworksRequest
                                                -> Handler InsertSongArtworksCommandResponse)
                                               :<|> ((Maybe Text
                                                      -> InsertArtistsOfSongsRequest
                                                      -> Handler InsertArtistsOfSongCommandResponse)
                                                     :<|> ((Maybe Text
                                                            -> InsertArtistsOfSongsRequest
                                                            -> Handler ())
                                                           :<|> ((Maybe Text
                                                                  -> SongArtworkOrderUpdateRequest
                                                                  -> Handler ())
                                                                 :<|> ((Maybe Text
                                                                        -> SongDeltaRequest
                                                                        -> Handler ())
                                                                       :<|> ((Maybe Text
                                                                              -> InsertSongContentsRequest
                                                                              -> Handler
                                                                                   InsertSongContentsCommandResponse)
                                                                             :<|> ((Maybe Text
                                                                                    -> UUID
                                                                                    -> Handler ())
                                                                                   :<|> (Maybe Text
                                                                                         -> SongContentDeltaRequest
                                                                                         -> Handler
                                                                                              ())))))))))))))))
    :<|> ((Maybe Text -> Handler GetMeQueryResponse)
          :<|> ((Maybe Text
                 -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))
-> (((Maybe Text -> UUID -> Handler ())
     :<|> ((Maybe Text -> UUID -> Handler ())
           :<|> ((Maybe Text -> UUID -> Handler ())
                 :<|> (Maybe Text -> UUID -> Handler ()))))
    :<|> ((Maybe Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetGenresQueryResponse)
          :<|> ((Maybe Text
                 -> Text
                 -> Maybe Int
                 -> Maybe Int
                 -> Maybe Text
                 -> Maybe Text
                 -> Handler GetGenresQueryResponse)
                :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                      :<|> ((Maybe Text
                             -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertGenreCommentsRequest
                                   -> Handler InsertGenreCommentsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> UpsertGenreOpinionsRequest
                                         -> Handler UpsertGenreOpinionsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertGenreArtworksRequest
                                               -> Handler InsertGenreArtworksCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> GenreArtworkOrderUpdateRequest
                                                     -> Handler ())
                                                    :<|> (Maybe Text
                                                          -> GenreDeltaRequest
                                                          -> Handler ()))))))))))
   :<|> ((((Maybe Text -> UUID -> Handler ())
           :<|> ((Maybe Text -> UUID -> Handler ())
                 :<|> ((Maybe Text -> UUID -> Handler ())
                       :<|> (Maybe Text -> UUID -> Handler ()))))
          :<|> ((Maybe Text
                 -> Maybe Int
                 -> Maybe Int
                 -> Maybe Text
                 -> Maybe Text
                 -> Handler GetSongsQueryResponse)
                :<|> ((Maybe Text
                       -> Text
                       -> Maybe Int
                       -> Maybe Int
                       -> Maybe Text
                       -> Maybe Text
                       -> Handler GetSongsQueryResponse)
                      :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                            :<|> ((Maybe Text
                                   -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertSongCommentsRequest
                                         -> Handler InsertSongCommentsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> UpsertSongOpinionsRequest
                                               -> Handler UpsertSongOpinionsCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> InsertSongArtworksRequest
                                                     -> Handler InsertSongArtworksCommandResponse)
                                                    :<|> ((Maybe Text
                                                           -> InsertArtistsOfSongsRequest
                                                           -> Handler
                                                                InsertArtistsOfSongCommandResponse)
                                                          :<|> ((Maybe Text
                                                                 -> InsertArtistsOfSongsRequest
                                                                 -> Handler ())
                                                                :<|> ((Maybe Text
                                                                       -> SongArtworkOrderUpdateRequest
                                                                       -> Handler ())
                                                                      :<|> ((Maybe Text
                                                                             -> SongDeltaRequest
                                                                             -> Handler ())
                                                                            :<|> ((Maybe Text
                                                                                   -> InsertSongContentsRequest
                                                                                   -> Handler
                                                                                        InsertSongContentsCommandResponse)
                                                                                  :<|> ((Maybe Text
                                                                                         -> UUID
                                                                                         -> Handler
                                                                                              ())
                                                                                        :<|> (Maybe
                                                                                                Text
                                                                                              -> SongContentDeltaRequest
                                                                                              -> Handler
                                                                                                   ())))))))))))))))
         :<|> ((Maybe Text -> Handler GetMeQueryResponse)
               :<|> ((Maybe Text
                      -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
                     :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Server SongsAPI
songHandlers Env
env (((Maybe Text -> UUID -> Handler ())
  :<|> ((Maybe Text -> UUID -> Handler ())
        :<|> ((Maybe Text -> UUID -> Handler ())
              :<|> (Maybe Text -> UUID -> Handler ()))))
 :<|> ((Maybe Text
        -> Maybe Int
        -> Maybe Int
        -> Maybe Text
        -> Maybe Text
        -> Handler GetSongsQueryResponse)
       :<|> ((Maybe Text
              -> Text
              -> Maybe Int
              -> Maybe Int
              -> Maybe Text
              -> Maybe Text
              -> Handler GetSongsQueryResponse)
             :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                   :<|> ((Maybe Text
                          -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                         :<|> ((Maybe Text
                                -> InsertSongCommentsRequest
                                -> Handler InsertSongCommentsCommandResponse)
                               :<|> ((Maybe Text
                                      -> UpsertSongOpinionsRequest
                                      -> Handler UpsertSongOpinionsCommandResponse)
                                     :<|> ((Maybe Text
                                            -> InsertSongArtworksRequest
                                            -> Handler InsertSongArtworksCommandResponse)
                                           :<|> ((Maybe Text
                                                  -> InsertArtistsOfSongsRequest
                                                  -> Handler InsertArtistsOfSongCommandResponse)
                                                 :<|> ((Maybe Text
                                                        -> InsertArtistsOfSongsRequest
                                                        -> Handler ())
                                                       :<|> ((Maybe Text
                                                              -> SongArtworkOrderUpdateRequest
                                                              -> Handler ())
                                                             :<|> ((Maybe Text
                                                                    -> SongDeltaRequest
                                                                    -> Handler ())
                                                                   :<|> ((Maybe Text
                                                                          -> InsertSongContentsRequest
                                                                          -> Handler
                                                                               InsertSongContentsCommandResponse)
                                                                         :<|> ((Maybe Text
                                                                                -> UUID
                                                                                -> Handler ())
                                                                               :<|> (Maybe Text
                                                                                     -> SongContentDeltaRequest
                                                                                     -> Handler
                                                                                          ())))))))))))))))
-> ((Maybe Text -> Handler GetMeQueryResponse)
    :<|> ((Maybe Text
           -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
          :<|> (Maybe Text -> DeleteUsersRequest -> Handler ())))
-> (((Maybe Text -> UUID -> Handler ())
     :<|> ((Maybe Text -> UUID -> Handler ())
           :<|> ((Maybe Text -> UUID -> Handler ())
                 :<|> (Maybe Text -> UUID -> Handler ()))))
    :<|> ((Maybe Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetSongsQueryResponse)
          :<|> ((Maybe Text
                 -> Text
                 -> Maybe Int
                 -> Maybe Int
                 -> Maybe Text
                 -> Maybe Text
                 -> Handler GetSongsQueryResponse)
                :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                      :<|> ((Maybe Text
                             -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertSongCommentsRequest
                                   -> Handler InsertSongCommentsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> UpsertSongOpinionsRequest
                                         -> Handler UpsertSongOpinionsCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertSongArtworksRequest
                                               -> Handler InsertSongArtworksCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> InsertArtistsOfSongsRequest
                                                     -> Handler InsertArtistsOfSongCommandResponse)
                                                    :<|> ((Maybe Text
                                                           -> InsertArtistsOfSongsRequest
                                                           -> Handler ())
                                                          :<|> ((Maybe Text
                                                                 -> SongArtworkOrderUpdateRequest
                                                                 -> Handler ())
                                                                :<|> ((Maybe Text
                                                                       -> SongDeltaRequest
                                                                       -> Handler ())
                                                                      :<|> ((Maybe Text
                                                                             -> InsertSongContentsRequest
                                                                             -> Handler
                                                                                  InsertSongContentsCommandResponse)
                                                                            :<|> ((Maybe Text
                                                                                   -> UUID
                                                                                   -> Handler ())
                                                                                  :<|> (Maybe Text
                                                                                        -> SongContentDeltaRequest
                                                                                        -> Handler
                                                                                             ())))))))))))))))
   :<|> ((Maybe Text -> Handler GetMeQueryResponse)
         :<|> ((Maybe Text
                -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
               :<|> (Maybe Text -> DeleteUsersRequest -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env -> Server AuthAPI
authHandlers Env
env

artistBase :: Env -> Server WithBaseEntityRoutes
artistBase :: Env -> Server WithBaseEntityRoutes
artistBase Env
env =
  Env -> Maybe Text -> UUID -> Handler ()
deleteArtistsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> (Maybe Text -> UUID -> Handler ())))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteArtistCommentsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> (Maybe Text -> UUID -> Handler ()))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> (Maybe Text -> UUID -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteArtistOpinionsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
   :<|> (Maybe Text -> UUID -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteArtistArtworksByIdentifierRoute Env
env

artistHandlers :: Env -> Server ArtistsAPI
artistHandlers :: Env -> Server ArtistsAPI
artistHandlers Env
env =
  Env -> Server WithBaseEntityRoutes
artistBase Env
env
    ((Maybe Text -> UUID -> Handler ())
 :<|> ((Maybe Text -> UUID -> Handler ())
       :<|> ((Maybe Text -> UUID -> Handler ())
             :<|> (Maybe Text -> UUID -> Handler ()))))
-> ((Maybe Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetArtistsQueryResponse)
    :<|> ((Maybe Text
           -> Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetArtistsQueryResponse)
          :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                :<|> ((Maybe Text
                       -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertArtistCommentsRequest
                             -> Handler InsertArtistCommentsCommandResponse)
                            :<|> ((Maybe Text
                                   -> UpsertArtistOpinionsRequest
                                   -> Handler UpsertArtistOpinionsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertArtistArtworksRequest
                                         -> Handler InsertArtistArtworksCommandResponse)
                                        :<|> ((Maybe Text
                                               -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                              :<|> (Maybe Text
                                                    -> ArtistDeltaRequest -> Handler ())))))))))
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> ((Maybe Text -> UUID -> Handler ())
                :<|> (Maybe Text -> UUID -> Handler ()))))
   :<|> ((Maybe Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetArtistsQueryResponse)
         :<|> ((Maybe Text
                -> Text
                -> Maybe Int
                -> Maybe Int
                -> Maybe Text
                -> Maybe Text
                -> Handler GetArtistsQueryResponse)
               :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
                     :<|> ((Maybe Text
                            -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertArtistCommentsRequest
                                  -> Handler InsertArtistCommentsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> UpsertArtistOpinionsRequest
                                        -> Handler UpsertArtistOpinionsCommandResponse)
                                       :<|> ((Maybe Text
                                              -> InsertArtistArtworksRequest
                                              -> Handler InsertArtistArtworksCommandResponse)
                                             :<|> ((Maybe Text
                                                    -> ArtistArtworkOrderUpdateRequest
                                                    -> Handler ())
                                                   :<|> (Maybe Text
                                                         -> ArtistDeltaRequest
                                                         -> Handler ())))))))))
forall a b. a -> b -> a :<|> b
:<|> ( Env
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetArtistsQueryResponse
fetchArtistsRoute Env
env
             (Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetArtistsQueryResponse)
-> ((Maybe Text
     -> Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetArtistsQueryResponse)
    :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
          :<|> ((Maybe Text
                 -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                :<|> ((Maybe Text
                       -> InsertArtistCommentsRequest
                       -> Handler InsertArtistCommentsCommandResponse)
                      :<|> ((Maybe Text
                             -> UpsertArtistOpinionsRequest
                             -> Handler UpsertArtistOpinionsCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertArtistArtworksRequest
                                   -> Handler InsertArtistArtworksCommandResponse)
                                  :<|> ((Maybe Text
                                         -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                        :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))))))))
-> (Maybe Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetArtistsQueryResponse)
   :<|> ((Maybe Text
          -> Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetArtistsQueryResponse)
         :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
               :<|> ((Maybe Text
                      -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertArtistCommentsRequest
                            -> Handler InsertArtistCommentsCommandResponse)
                           :<|> ((Maybe Text
                                  -> UpsertArtistOpinionsRequest
                                  -> Handler UpsertArtistOpinionsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> InsertArtistArtworksRequest
                                        -> Handler InsertArtistArtworksCommandResponse)
                                       :<|> ((Maybe Text
                                              -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                             :<|> (Maybe Text
                                                   -> ArtistDeltaRequest -> Handler ()))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetArtistsQueryResponse
searchArtistsRoute Env
env
             (Maybe Text
 -> Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetArtistsQueryResponse)
-> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
    :<|> ((Maybe Text
           -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
          :<|> ((Maybe Text
                 -> InsertArtistCommentsRequest
                 -> Handler InsertArtistCommentsCommandResponse)
                :<|> ((Maybe Text
                       -> UpsertArtistOpinionsRequest
                       -> Handler UpsertArtistOpinionsCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertArtistArtworksRequest
                             -> Handler InsertArtistArtworksCommandResponse)
                            :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                  :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))))))
-> (Maybe Text
    -> Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetArtistsQueryResponse)
   :<|> ((Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
         :<|> ((Maybe Text
                -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
               :<|> ((Maybe Text
                      -> InsertArtistCommentsRequest
                      -> Handler InsertArtistCommentsCommandResponse)
                     :<|> ((Maybe Text
                            -> UpsertArtistOpinionsRequest
                            -> Handler UpsertArtistOpinionsCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertArtistArtworksRequest
                                  -> Handler InsertArtistArtworksCommandResponse)
                                 :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                       :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler GetArtistsQueryResponse
fetchArtistRoute Env
env
             (Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
-> ((Maybe Text
     -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
    :<|> ((Maybe Text
           -> InsertArtistCommentsRequest
           -> Handler InsertArtistCommentsCommandResponse)
          :<|> ((Maybe Text
                 -> UpsertArtistOpinionsRequest
                 -> Handler UpsertArtistOpinionsCommandResponse)
                :<|> ((Maybe Text
                       -> InsertArtistArtworksRequest
                       -> Handler InsertArtistArtworksCommandResponse)
                      :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                            :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))))))
-> (Maybe Text -> UUID -> Handler GetArtistsQueryResponse)
   :<|> ((Maybe Text
          -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
         :<|> ((Maybe Text
                -> InsertArtistCommentsRequest
                -> Handler InsertArtistCommentsCommandResponse)
               :<|> ((Maybe Text
                      -> UpsertArtistOpinionsRequest
                      -> Handler UpsertArtistOpinionsCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertArtistArtworksRequest
                            -> Handler InsertArtistArtworksCommandResponse)
                           :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                                 :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertArtistsRequest
-> Handler InsertArtistsCommandResponse
insertArtistsRoute Env
env
             (Maybe Text
 -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
-> ((Maybe Text
     -> InsertArtistCommentsRequest
     -> Handler InsertArtistCommentsCommandResponse)
    :<|> ((Maybe Text
           -> UpsertArtistOpinionsRequest
           -> Handler UpsertArtistOpinionsCommandResponse)
          :<|> ((Maybe Text
                 -> InsertArtistArtworksRequest
                 -> Handler InsertArtistArtworksCommandResponse)
                :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                      :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))))
-> (Maybe Text
    -> InsertArtistsRequest -> Handler InsertArtistsCommandResponse)
   :<|> ((Maybe Text
          -> InsertArtistCommentsRequest
          -> Handler InsertArtistCommentsCommandResponse)
         :<|> ((Maybe Text
                -> UpsertArtistOpinionsRequest
                -> Handler UpsertArtistOpinionsCommandResponse)
               :<|> ((Maybe Text
                      -> InsertArtistArtworksRequest
                      -> Handler InsertArtistArtworksCommandResponse)
                     :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                           :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertArtistCommentsRequest
-> Handler InsertArtistCommentsCommandResponse
insertArtistCommentsRoute Env
env
             (Maybe Text
 -> InsertArtistCommentsRequest
 -> Handler InsertArtistCommentsCommandResponse)
-> ((Maybe Text
     -> UpsertArtistOpinionsRequest
     -> Handler UpsertArtistOpinionsCommandResponse)
    :<|> ((Maybe Text
           -> InsertArtistArtworksRequest
           -> Handler InsertArtistArtworksCommandResponse)
          :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))))
-> (Maybe Text
    -> InsertArtistCommentsRequest
    -> Handler InsertArtistCommentsCommandResponse)
   :<|> ((Maybe Text
          -> UpsertArtistOpinionsRequest
          -> Handler UpsertArtistOpinionsCommandResponse)
         :<|> ((Maybe Text
                -> InsertArtistArtworksRequest
                -> Handler InsertArtistArtworksCommandResponse)
               :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
                     :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> UpsertArtistOpinionsRequest
-> Handler UpsertArtistOpinionsCommandResponse
upsertArtistOpinionsRoute Env
env
             (Maybe Text
 -> UpsertArtistOpinionsRequest
 -> Handler UpsertArtistOpinionsCommandResponse)
-> ((Maybe Text
     -> InsertArtistArtworksRequest
     -> Handler InsertArtistArtworksCommandResponse)
    :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
          :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))
-> (Maybe Text
    -> UpsertArtistOpinionsRequest
    -> Handler UpsertArtistOpinionsCommandResponse)
   :<|> ((Maybe Text
          -> InsertArtistArtworksRequest
          -> Handler InsertArtistArtworksCommandResponse)
         :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
               :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertArtistArtworksRequest
-> Handler InsertArtistArtworksCommandResponse
insertArtistArtworksRoute Env
env
             (Maybe Text
 -> InsertArtistArtworksRequest
 -> Handler InsertArtistArtworksCommandResponse)
-> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
    :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))
-> (Maybe Text
    -> InsertArtistArtworksRequest
    -> Handler InsertArtistArtworksCommandResponse)
   :<|> ((Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
         :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ()
updateArtistArtworksOrderRoute Env
env
             (Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
-> (Maybe Text -> ArtistDeltaRequest -> Handler ())
-> (Maybe Text -> ArtistArtworkOrderUpdateRequest -> Handler ())
   :<|> (Maybe Text -> ArtistDeltaRequest -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> ArtistDeltaRequest -> Handler ()
updateArtistRoute Env
env
         )

genreBase :: Env -> Server WithBaseEntityRoutes
genreBase :: Env -> Server WithBaseEntityRoutes
genreBase Env
env =
  Env -> Maybe Text -> UUID -> Handler ()
deleteGenresByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> (Maybe Text -> UUID -> Handler ())))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteGenreCommentsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> (Maybe Text -> UUID -> Handler ()))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> (Maybe Text -> UUID -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteGenreOpinionsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
   :<|> (Maybe Text -> UUID -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteGenreArtworksByIdentifierRoute Env
env

genreHandlers :: Env -> Server GenresAPI
genreHandlers :: Env -> Server GenresAPI
genreHandlers Env
env =
  Env -> Server WithBaseEntityRoutes
genreBase Env
env
    ((Maybe Text -> UUID -> Handler ())
 :<|> ((Maybe Text -> UUID -> Handler ())
       :<|> ((Maybe Text -> UUID -> Handler ())
             :<|> (Maybe Text -> UUID -> Handler ()))))
-> ((Maybe Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetGenresQueryResponse)
    :<|> ((Maybe Text
           -> Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetGenresQueryResponse)
          :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                :<|> ((Maybe Text
                       -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertGenreCommentsRequest
                             -> Handler InsertGenreCommentsCommandResponse)
                            :<|> ((Maybe Text
                                   -> UpsertGenreOpinionsRequest
                                   -> Handler UpsertGenreOpinionsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertGenreArtworksRequest
                                         -> Handler InsertGenreArtworksCommandResponse)
                                        :<|> ((Maybe Text
                                               -> GenreArtworkOrderUpdateRequest -> Handler ())
                                              :<|> (Maybe Text
                                                    -> GenreDeltaRequest -> Handler ())))))))))
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> ((Maybe Text -> UUID -> Handler ())
                :<|> (Maybe Text -> UUID -> Handler ()))))
   :<|> ((Maybe Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetGenresQueryResponse)
         :<|> ((Maybe Text
                -> Text
                -> Maybe Int
                -> Maybe Int
                -> Maybe Text
                -> Maybe Text
                -> Handler GetGenresQueryResponse)
               :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
                     :<|> ((Maybe Text
                            -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertGenreCommentsRequest
                                  -> Handler InsertGenreCommentsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> UpsertGenreOpinionsRequest
                                        -> Handler UpsertGenreOpinionsCommandResponse)
                                       :<|> ((Maybe Text
                                              -> InsertGenreArtworksRequest
                                              -> Handler InsertGenreArtworksCommandResponse)
                                             :<|> ((Maybe Text
                                                    -> GenreArtworkOrderUpdateRequest -> Handler ())
                                                   :<|> (Maybe Text
                                                         -> GenreDeltaRequest -> Handler ())))))))))
forall a b. a -> b -> a :<|> b
:<|> ( Env
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetGenresQueryResponse
fetchGenresRoute Env
env
             (Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetGenresQueryResponse)
-> ((Maybe Text
     -> Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetGenresQueryResponse)
    :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
          :<|> ((Maybe Text
                 -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                :<|> ((Maybe Text
                       -> InsertGenreCommentsRequest
                       -> Handler InsertGenreCommentsCommandResponse)
                      :<|> ((Maybe Text
                             -> UpsertGenreOpinionsRequest
                             -> Handler UpsertGenreOpinionsCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertGenreArtworksRequest
                                   -> Handler InsertGenreArtworksCommandResponse)
                                  :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                                        :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))))))))
-> (Maybe Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetGenresQueryResponse)
   :<|> ((Maybe Text
          -> Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetGenresQueryResponse)
         :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
               :<|> ((Maybe Text
                      -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertGenreCommentsRequest
                            -> Handler InsertGenreCommentsCommandResponse)
                           :<|> ((Maybe Text
                                  -> UpsertGenreOpinionsRequest
                                  -> Handler UpsertGenreOpinionsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> InsertGenreArtworksRequest
                                        -> Handler InsertGenreArtworksCommandResponse)
                                       :<|> ((Maybe Text
                                              -> GenreArtworkOrderUpdateRequest -> Handler ())
                                             :<|> (Maybe Text
                                                   -> GenreDeltaRequest -> Handler ()))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetGenresQueryResponse
searchGenresRoute Env
env
             (Maybe Text
 -> Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetGenresQueryResponse)
-> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
    :<|> ((Maybe Text
           -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
          :<|> ((Maybe Text
                 -> InsertGenreCommentsRequest
                 -> Handler InsertGenreCommentsCommandResponse)
                :<|> ((Maybe Text
                       -> UpsertGenreOpinionsRequest
                       -> Handler UpsertGenreOpinionsCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertGenreArtworksRequest
                             -> Handler InsertGenreArtworksCommandResponse)
                            :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                                  :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))))))
-> (Maybe Text
    -> Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetGenresQueryResponse)
   :<|> ((Maybe Text -> UUID -> Handler GetGenresQueryResponse)
         :<|> ((Maybe Text
                -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
               :<|> ((Maybe Text
                      -> InsertGenreCommentsRequest
                      -> Handler InsertGenreCommentsCommandResponse)
                     :<|> ((Maybe Text
                            -> UpsertGenreOpinionsRequest
                            -> Handler UpsertGenreOpinionsCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertGenreArtworksRequest
                                  -> Handler InsertGenreArtworksCommandResponse)
                                 :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                                       :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler GetGenresQueryResponse
fetchGenreRoute Env
env
             (Maybe Text -> UUID -> Handler GetGenresQueryResponse)
-> ((Maybe Text
     -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
    :<|> ((Maybe Text
           -> InsertGenreCommentsRequest
           -> Handler InsertGenreCommentsCommandResponse)
          :<|> ((Maybe Text
                 -> UpsertGenreOpinionsRequest
                 -> Handler UpsertGenreOpinionsCommandResponse)
                :<|> ((Maybe Text
                       -> InsertGenreArtworksRequest
                       -> Handler InsertGenreArtworksCommandResponse)
                      :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                            :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))))))
-> (Maybe Text -> UUID -> Handler GetGenresQueryResponse)
   :<|> ((Maybe Text
          -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
         :<|> ((Maybe Text
                -> InsertGenreCommentsRequest
                -> Handler InsertGenreCommentsCommandResponse)
               :<|> ((Maybe Text
                      -> UpsertGenreOpinionsRequest
                      -> Handler UpsertGenreOpinionsCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertGenreArtworksRequest
                            -> Handler InsertGenreArtworksCommandResponse)
                           :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                                 :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertGenresRequest
-> Handler InsertGenresCommandResponse
insertGenresRoute Env
env
             (Maybe Text
 -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
-> ((Maybe Text
     -> InsertGenreCommentsRequest
     -> Handler InsertGenreCommentsCommandResponse)
    :<|> ((Maybe Text
           -> UpsertGenreOpinionsRequest
           -> Handler UpsertGenreOpinionsCommandResponse)
          :<|> ((Maybe Text
                 -> InsertGenreArtworksRequest
                 -> Handler InsertGenreArtworksCommandResponse)
                :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                      :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))))
-> (Maybe Text
    -> InsertGenresRequest -> Handler InsertGenresCommandResponse)
   :<|> ((Maybe Text
          -> InsertGenreCommentsRequest
          -> Handler InsertGenreCommentsCommandResponse)
         :<|> ((Maybe Text
                -> UpsertGenreOpinionsRequest
                -> Handler UpsertGenreOpinionsCommandResponse)
               :<|> ((Maybe Text
                      -> InsertGenreArtworksRequest
                      -> Handler InsertGenreArtworksCommandResponse)
                     :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                           :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertGenreCommentsRequest
-> Handler InsertGenreCommentsCommandResponse
insertGenreCommentsRoute Env
env
             (Maybe Text
 -> InsertGenreCommentsRequest
 -> Handler InsertGenreCommentsCommandResponse)
-> ((Maybe Text
     -> UpsertGenreOpinionsRequest
     -> Handler UpsertGenreOpinionsCommandResponse)
    :<|> ((Maybe Text
           -> InsertGenreArtworksRequest
           -> Handler InsertGenreArtworksCommandResponse)
          :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))))
-> (Maybe Text
    -> InsertGenreCommentsRequest
    -> Handler InsertGenreCommentsCommandResponse)
   :<|> ((Maybe Text
          -> UpsertGenreOpinionsRequest
          -> Handler UpsertGenreOpinionsCommandResponse)
         :<|> ((Maybe Text
                -> InsertGenreArtworksRequest
                -> Handler InsertGenreArtworksCommandResponse)
               :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
                     :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> UpsertGenreOpinionsRequest
-> Handler UpsertGenreOpinionsCommandResponse
upsertGenreOpinionsRoute Env
env
             (Maybe Text
 -> UpsertGenreOpinionsRequest
 -> Handler UpsertGenreOpinionsCommandResponse)
-> ((Maybe Text
     -> InsertGenreArtworksRequest
     -> Handler InsertGenreArtworksCommandResponse)
    :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
          :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))
-> (Maybe Text
    -> UpsertGenreOpinionsRequest
    -> Handler UpsertGenreOpinionsCommandResponse)
   :<|> ((Maybe Text
          -> InsertGenreArtworksRequest
          -> Handler InsertGenreArtworksCommandResponse)
         :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
               :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertGenreArtworksRequest
-> Handler InsertGenreArtworksCommandResponse
insertGenreArtworksRoute Env
env
             (Maybe Text
 -> InsertGenreArtworksRequest
 -> Handler InsertGenreArtworksCommandResponse)
-> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
    :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))
-> (Maybe Text
    -> InsertGenreArtworksRequest
    -> Handler InsertGenreArtworksCommandResponse)
   :<|> ((Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
         :<|> (Maybe Text -> GenreDeltaRequest -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ()
updateGenreArtworksOrderRoute Env
env
             (Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
-> (Maybe Text -> GenreDeltaRequest -> Handler ())
-> (Maybe Text -> GenreArtworkOrderUpdateRequest -> Handler ())
   :<|> (Maybe Text -> GenreDeltaRequest -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> GenreDeltaRequest -> Handler ()
updateGenreRoute Env
env
         )

songBase :: Env -> Server WithBaseEntityRoutes
songBase :: Env -> Server WithBaseEntityRoutes
songBase Env
env =
  Env -> Maybe Text -> UUID -> Handler ()
deleteSongsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> (Maybe Text -> UUID -> Handler ())))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> UUID -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteSongCommentsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> ((Maybe Text -> UUID -> Handler ())
    :<|> (Maybe Text -> UUID -> Handler ()))
-> (Maybe Text -> UUID -> Handler ())
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> (Maybe Text -> UUID -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteSongOpinionsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
   :<|> (Maybe Text -> UUID -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteSongArtworksByIdentifierRoute Env
env

songHandlers :: Env -> Server SongsAPI
songHandlers :: Env -> Server SongsAPI
songHandlers Env
env =
  Env -> Server WithBaseEntityRoutes
songBase Env
env
    ((Maybe Text -> UUID -> Handler ())
 :<|> ((Maybe Text -> UUID -> Handler ())
       :<|> ((Maybe Text -> UUID -> Handler ())
             :<|> (Maybe Text -> UUID -> Handler ()))))
-> ((Maybe Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetSongsQueryResponse)
    :<|> ((Maybe Text
           -> Text
           -> Maybe Int
           -> Maybe Int
           -> Maybe Text
           -> Maybe Text
           -> Handler GetSongsQueryResponse)
          :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                :<|> ((Maybe Text
                       -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertSongCommentsRequest
                             -> Handler InsertSongCommentsCommandResponse)
                            :<|> ((Maybe Text
                                   -> UpsertSongOpinionsRequest
                                   -> Handler UpsertSongOpinionsCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertSongArtworksRequest
                                         -> Handler InsertSongArtworksCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertArtistsOfSongsRequest
                                               -> Handler InsertArtistsOfSongCommandResponse)
                                              :<|> ((Maybe Text
                                                     -> InsertArtistsOfSongsRequest -> Handler ())
                                                    :<|> ((Maybe Text
                                                           -> SongArtworkOrderUpdateRequest
                                                           -> Handler ())
                                                          :<|> ((Maybe Text
                                                                 -> SongDeltaRequest -> Handler ())
                                                                :<|> ((Maybe Text
                                                                       -> InsertSongContentsRequest
                                                                       -> Handler
                                                                            InsertSongContentsCommandResponse)
                                                                      :<|> ((Maybe Text
                                                                             -> UUID -> Handler ())
                                                                            :<|> (Maybe Text
                                                                                  -> SongContentDeltaRequest
                                                                                  -> Handler
                                                                                       ()))))))))))))))
-> ((Maybe Text -> UUID -> Handler ())
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> ((Maybe Text -> UUID -> Handler ())
                :<|> (Maybe Text -> UUID -> Handler ()))))
   :<|> ((Maybe Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetSongsQueryResponse)
         :<|> ((Maybe Text
                -> Text
                -> Maybe Int
                -> Maybe Int
                -> Maybe Text
                -> Maybe Text
                -> Handler GetSongsQueryResponse)
               :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
                     :<|> ((Maybe Text
                            -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertSongCommentsRequest
                                  -> Handler InsertSongCommentsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> UpsertSongOpinionsRequest
                                        -> Handler UpsertSongOpinionsCommandResponse)
                                       :<|> ((Maybe Text
                                              -> InsertSongArtworksRequest
                                              -> Handler InsertSongArtworksCommandResponse)
                                             :<|> ((Maybe Text
                                                    -> InsertArtistsOfSongsRequest
                                                    -> Handler InsertArtistsOfSongCommandResponse)
                                                   :<|> ((Maybe Text
                                                          -> InsertArtistsOfSongsRequest
                                                          -> Handler ())
                                                         :<|> ((Maybe Text
                                                                -> SongArtworkOrderUpdateRequest
                                                                -> Handler ())
                                                               :<|> ((Maybe Text
                                                                      -> SongDeltaRequest
                                                                      -> Handler ())
                                                                     :<|> ((Maybe Text
                                                                            -> InsertSongContentsRequest
                                                                            -> Handler
                                                                                 InsertSongContentsCommandResponse)
                                                                           :<|> ((Maybe Text
                                                                                  -> UUID
                                                                                  -> Handler ())
                                                                                 :<|> (Maybe Text
                                                                                       -> SongContentDeltaRequest
                                                                                       -> Handler
                                                                                            ()))))))))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetSongsQueryResponse
fetchSongsRoute Env
env
    (Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetSongsQueryResponse)
-> ((Maybe Text
     -> Text
     -> Maybe Int
     -> Maybe Int
     -> Maybe Text
     -> Maybe Text
     -> Handler GetSongsQueryResponse)
    :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
          :<|> ((Maybe Text
                 -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                :<|> ((Maybe Text
                       -> InsertSongCommentsRequest
                       -> Handler InsertSongCommentsCommandResponse)
                      :<|> ((Maybe Text
                             -> UpsertSongOpinionsRequest
                             -> Handler UpsertSongOpinionsCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertSongArtworksRequest
                                   -> Handler InsertSongArtworksCommandResponse)
                                  :<|> ((Maybe Text
                                         -> InsertArtistsOfSongsRequest
                                         -> Handler InsertArtistsOfSongCommandResponse)
                                        :<|> ((Maybe Text
                                               -> InsertArtistsOfSongsRequest -> Handler ())
                                              :<|> ((Maybe Text
                                                     -> SongArtworkOrderUpdateRequest -> Handler ())
                                                    :<|> ((Maybe Text
                                                           -> SongDeltaRequest -> Handler ())
                                                          :<|> ((Maybe Text
                                                                 -> InsertSongContentsRequest
                                                                 -> Handler
                                                                      InsertSongContentsCommandResponse)
                                                                :<|> ((Maybe Text
                                                                       -> UUID -> Handler ())
                                                                      :<|> (Maybe Text
                                                                            -> SongContentDeltaRequest
                                                                            -> Handler
                                                                                 ())))))))))))))
-> (Maybe Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetSongsQueryResponse)
   :<|> ((Maybe Text
          -> Text
          -> Maybe Int
          -> Maybe Int
          -> Maybe Text
          -> Maybe Text
          -> Handler GetSongsQueryResponse)
         :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
               :<|> ((Maybe Text
                      -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertSongCommentsRequest
                            -> Handler InsertSongCommentsCommandResponse)
                           :<|> ((Maybe Text
                                  -> UpsertSongOpinionsRequest
                                  -> Handler UpsertSongOpinionsCommandResponse)
                                 :<|> ((Maybe Text
                                        -> InsertSongArtworksRequest
                                        -> Handler InsertSongArtworksCommandResponse)
                                       :<|> ((Maybe Text
                                              -> InsertArtistsOfSongsRequest
                                              -> Handler InsertArtistsOfSongCommandResponse)
                                             :<|> ((Maybe Text
                                                    -> InsertArtistsOfSongsRequest -> Handler ())
                                                   :<|> ((Maybe Text
                                                          -> SongArtworkOrderUpdateRequest
                                                          -> Handler ())
                                                         :<|> ((Maybe Text
                                                                -> SongDeltaRequest -> Handler ())
                                                               :<|> ((Maybe Text
                                                                      -> InsertSongContentsRequest
                                                                      -> Handler
                                                                           InsertSongContentsCommandResponse)
                                                                     :<|> ((Maybe Text
                                                                            -> UUID -> Handler ())
                                                                           :<|> (Maybe Text
                                                                                 -> SongContentDeltaRequest
                                                                                 -> Handler
                                                                                      ())))))))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Handler GetSongsQueryResponse
searchSongsRoute Env
env
    (Maybe Text
 -> Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Handler GetSongsQueryResponse)
-> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
    :<|> ((Maybe Text
           -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
          :<|> ((Maybe Text
                 -> InsertSongCommentsRequest
                 -> Handler InsertSongCommentsCommandResponse)
                :<|> ((Maybe Text
                       -> UpsertSongOpinionsRequest
                       -> Handler UpsertSongOpinionsCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertSongArtworksRequest
                             -> Handler InsertSongArtworksCommandResponse)
                            :<|> ((Maybe Text
                                   -> InsertArtistsOfSongsRequest
                                   -> Handler InsertArtistsOfSongCommandResponse)
                                  :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                                        :<|> ((Maybe Text
                                               -> SongArtworkOrderUpdateRequest -> Handler ())
                                              :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                                    :<|> ((Maybe Text
                                                           -> InsertSongContentsRequest
                                                           -> Handler
                                                                InsertSongContentsCommandResponse)
                                                          :<|> ((Maybe Text -> UUID -> Handler ())
                                                                :<|> (Maybe Text
                                                                      -> SongContentDeltaRequest
                                                                      -> Handler ()))))))))))))
-> (Maybe Text
    -> Text
    -> Maybe Int
    -> Maybe Int
    -> Maybe Text
    -> Maybe Text
    -> Handler GetSongsQueryResponse)
   :<|> ((Maybe Text -> UUID -> Handler GetSongsQueryResponse)
         :<|> ((Maybe Text
                -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
               :<|> ((Maybe Text
                      -> InsertSongCommentsRequest
                      -> Handler InsertSongCommentsCommandResponse)
                     :<|> ((Maybe Text
                            -> UpsertSongOpinionsRequest
                            -> Handler UpsertSongOpinionsCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertSongArtworksRequest
                                  -> Handler InsertSongArtworksCommandResponse)
                                 :<|> ((Maybe Text
                                        -> InsertArtistsOfSongsRequest
                                        -> Handler InsertArtistsOfSongCommandResponse)
                                       :<|> ((Maybe Text
                                              -> InsertArtistsOfSongsRequest -> Handler ())
                                             :<|> ((Maybe Text
                                                    -> SongArtworkOrderUpdateRequest -> Handler ())
                                                   :<|> ((Maybe Text
                                                          -> SongDeltaRequest -> Handler ())
                                                         :<|> ((Maybe Text
                                                                -> InsertSongContentsRequest
                                                                -> Handler
                                                                     InsertSongContentsCommandResponse)
                                                               :<|> ((Maybe Text
                                                                      -> UUID -> Handler ())
                                                                     :<|> (Maybe Text
                                                                           -> SongContentDeltaRequest
                                                                           -> Handler ()))))))))))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler GetSongsQueryResponse
fetchSongRoute Env
env
    (Maybe Text -> UUID -> Handler GetSongsQueryResponse)
-> ((Maybe Text
     -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
    :<|> ((Maybe Text
           -> InsertSongCommentsRequest
           -> Handler InsertSongCommentsCommandResponse)
          :<|> ((Maybe Text
                 -> UpsertSongOpinionsRequest
                 -> Handler UpsertSongOpinionsCommandResponse)
                :<|> ((Maybe Text
                       -> InsertSongArtworksRequest
                       -> Handler InsertSongArtworksCommandResponse)
                      :<|> ((Maybe Text
                             -> InsertArtistsOfSongsRequest
                             -> Handler InsertArtistsOfSongCommandResponse)
                            :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                                  :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                                        :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                              :<|> ((Maybe Text
                                                     -> InsertSongContentsRequest
                                                     -> Handler InsertSongContentsCommandResponse)
                                                    :<|> ((Maybe Text -> UUID -> Handler ())
                                                          :<|> (Maybe Text
                                                                -> SongContentDeltaRequest
                                                                -> Handler ())))))))))))
-> (Maybe Text -> UUID -> Handler GetSongsQueryResponse)
   :<|> ((Maybe Text
          -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
         :<|> ((Maybe Text
                -> InsertSongCommentsRequest
                -> Handler InsertSongCommentsCommandResponse)
               :<|> ((Maybe Text
                      -> UpsertSongOpinionsRequest
                      -> Handler UpsertSongOpinionsCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertSongArtworksRequest
                            -> Handler InsertSongArtworksCommandResponse)
                           :<|> ((Maybe Text
                                  -> InsertArtistsOfSongsRequest
                                  -> Handler InsertArtistsOfSongCommandResponse)
                                 :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                                       :<|> ((Maybe Text
                                              -> SongArtworkOrderUpdateRequest -> Handler ())
                                             :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                                   :<|> ((Maybe Text
                                                          -> InsertSongContentsRequest
                                                          -> Handler
                                                               InsertSongContentsCommandResponse)
                                                         :<|> ((Maybe Text -> UUID -> Handler ())
                                                               :<|> (Maybe Text
                                                                     -> SongContentDeltaRequest
                                                                     -> Handler ())))))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertSongsRequest
-> Handler InsertSongsCommandResponse
insertSongsRoute Env
env
    (Maybe Text
 -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
-> ((Maybe Text
     -> InsertSongCommentsRequest
     -> Handler InsertSongCommentsCommandResponse)
    :<|> ((Maybe Text
           -> UpsertSongOpinionsRequest
           -> Handler UpsertSongOpinionsCommandResponse)
          :<|> ((Maybe Text
                 -> InsertSongArtworksRequest
                 -> Handler InsertSongArtworksCommandResponse)
                :<|> ((Maybe Text
                       -> InsertArtistsOfSongsRequest
                       -> Handler InsertArtistsOfSongCommandResponse)
                      :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                            :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                                  :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                        :<|> ((Maybe Text
                                               -> InsertSongContentsRequest
                                               -> Handler InsertSongContentsCommandResponse)
                                              :<|> ((Maybe Text -> UUID -> Handler ())
                                                    :<|> (Maybe Text
                                                          -> SongContentDeltaRequest
                                                          -> Handler ()))))))))))
-> (Maybe Text
    -> InsertSongsRequest -> Handler InsertSongsCommandResponse)
   :<|> ((Maybe Text
          -> InsertSongCommentsRequest
          -> Handler InsertSongCommentsCommandResponse)
         :<|> ((Maybe Text
                -> UpsertSongOpinionsRequest
                -> Handler UpsertSongOpinionsCommandResponse)
               :<|> ((Maybe Text
                      -> InsertSongArtworksRequest
                      -> Handler InsertSongArtworksCommandResponse)
                     :<|> ((Maybe Text
                            -> InsertArtistsOfSongsRequest
                            -> Handler InsertArtistsOfSongCommandResponse)
                           :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                                 :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                                       :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                             :<|> ((Maybe Text
                                                    -> InsertSongContentsRequest
                                                    -> Handler InsertSongContentsCommandResponse)
                                                   :<|> ((Maybe Text -> UUID -> Handler ())
                                                         :<|> (Maybe Text
                                                               -> SongContentDeltaRequest
                                                               -> Handler ()))))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertSongCommentsRequest
-> Handler InsertSongCommentsCommandResponse
insertSongCommentsRoute Env
env
    (Maybe Text
 -> InsertSongCommentsRequest
 -> Handler InsertSongCommentsCommandResponse)
-> ((Maybe Text
     -> UpsertSongOpinionsRequest
     -> Handler UpsertSongOpinionsCommandResponse)
    :<|> ((Maybe Text
           -> InsertSongArtworksRequest
           -> Handler InsertSongArtworksCommandResponse)
          :<|> ((Maybe Text
                 -> InsertArtistsOfSongsRequest
                 -> Handler InsertArtistsOfSongCommandResponse)
                :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                      :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                            :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                  :<|> ((Maybe Text
                                         -> InsertSongContentsRequest
                                         -> Handler InsertSongContentsCommandResponse)
                                        :<|> ((Maybe Text -> UUID -> Handler ())
                                              :<|> (Maybe Text
                                                    -> SongContentDeltaRequest
                                                    -> Handler ())))))))))
-> (Maybe Text
    -> InsertSongCommentsRequest
    -> Handler InsertSongCommentsCommandResponse)
   :<|> ((Maybe Text
          -> UpsertSongOpinionsRequest
          -> Handler UpsertSongOpinionsCommandResponse)
         :<|> ((Maybe Text
                -> InsertSongArtworksRequest
                -> Handler InsertSongArtworksCommandResponse)
               :<|> ((Maybe Text
                      -> InsertArtistsOfSongsRequest
                      -> Handler InsertArtistsOfSongCommandResponse)
                     :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                           :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                                 :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                       :<|> ((Maybe Text
                                              -> InsertSongContentsRequest
                                              -> Handler InsertSongContentsCommandResponse)
                                             :<|> ((Maybe Text -> UUID -> Handler ())
                                                   :<|> (Maybe Text
                                                         -> SongContentDeltaRequest
                                                         -> Handler ())))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> UpsertSongOpinionsRequest
-> Handler UpsertSongOpinionsCommandResponse
upsertSongOpinionsRoute Env
env
    (Maybe Text
 -> UpsertSongOpinionsRequest
 -> Handler UpsertSongOpinionsCommandResponse)
-> ((Maybe Text
     -> InsertSongArtworksRequest
     -> Handler InsertSongArtworksCommandResponse)
    :<|> ((Maybe Text
           -> InsertArtistsOfSongsRequest
           -> Handler InsertArtistsOfSongCommandResponse)
          :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                      :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                            :<|> ((Maybe Text
                                   -> InsertSongContentsRequest
                                   -> Handler InsertSongContentsCommandResponse)
                                  :<|> ((Maybe Text -> UUID -> Handler ())
                                        :<|> (Maybe Text
                                              -> SongContentDeltaRequest -> Handler ()))))))))
-> (Maybe Text
    -> UpsertSongOpinionsRequest
    -> Handler UpsertSongOpinionsCommandResponse)
   :<|> ((Maybe Text
          -> InsertSongArtworksRequest
          -> Handler InsertSongArtworksCommandResponse)
         :<|> ((Maybe Text
                -> InsertArtistsOfSongsRequest
                -> Handler InsertArtistsOfSongCommandResponse)
               :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
                     :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                           :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                                 :<|> ((Maybe Text
                                        -> InsertSongContentsRequest
                                        -> Handler InsertSongContentsCommandResponse)
                                       :<|> ((Maybe Text -> UUID -> Handler ())
                                             :<|> (Maybe Text
                                                   -> SongContentDeltaRequest -> Handler ()))))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertSongArtworksRequest
-> Handler InsertSongArtworksCommandResponse
insertSongArtworksRoute Env
env
    (Maybe Text
 -> InsertSongArtworksRequest
 -> Handler InsertSongArtworksCommandResponse)
-> ((Maybe Text
     -> InsertArtistsOfSongsRequest
     -> Handler InsertArtistsOfSongCommandResponse)
    :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
          :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                      :<|> ((Maybe Text
                             -> InsertSongContentsRequest
                             -> Handler InsertSongContentsCommandResponse)
                            :<|> ((Maybe Text -> UUID -> Handler ())
                                  :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())))))))
-> (Maybe Text
    -> InsertSongArtworksRequest
    -> Handler InsertSongArtworksCommandResponse)
   :<|> ((Maybe Text
          -> InsertArtistsOfSongsRequest
          -> Handler InsertArtistsOfSongCommandResponse)
         :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
               :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
                     :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                           :<|> ((Maybe Text
                                  -> InsertSongContentsRequest
                                  -> Handler InsertSongContentsCommandResponse)
                                 :<|> ((Maybe Text -> UUID -> Handler ())
                                       :<|> (Maybe Text
                                             -> SongContentDeltaRequest -> Handler ())))))))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertArtistsOfSongsRequest
-> Handler InsertArtistsOfSongCommandResponse
insertArtistOfSongRoute Env
env
    (Maybe Text
 -> InsertArtistsOfSongsRequest
 -> Handler InsertArtistsOfSongCommandResponse)
-> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
    :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
          :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                :<|> ((Maybe Text
                       -> InsertSongContentsRequest
                       -> Handler InsertSongContentsCommandResponse)
                      :<|> ((Maybe Text -> UUID -> Handler ())
                            :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))))))
-> (Maybe Text
    -> InsertArtistsOfSongsRequest
    -> Handler InsertArtistsOfSongCommandResponse)
   :<|> ((Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
         :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
               :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
                     :<|> ((Maybe Text
                            -> InsertSongContentsRequest
                            -> Handler InsertSongContentsCommandResponse)
                           :<|> ((Maybe Text -> UUID -> Handler ())
                                 :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> InsertArtistsOfSongsRequest -> Handler ()
deleteArtistOfSongRoute Env
env
    (Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
-> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
    :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
          :<|> ((Maybe Text
                 -> InsertSongContentsRequest
                 -> Handler InsertSongContentsCommandResponse)
                :<|> ((Maybe Text -> UUID -> Handler ())
                      :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())))))
-> (Maybe Text -> InsertArtistsOfSongsRequest -> Handler ())
   :<|> ((Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
         :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
               :<|> ((Maybe Text
                      -> InsertSongContentsRequest
                      -> Handler InsertSongContentsCommandResponse)
                     :<|> ((Maybe Text -> UUID -> Handler ())
                           :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ()
updateSongArtworksOrderRoute Env
env
    (Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
-> ((Maybe Text -> SongDeltaRequest -> Handler ())
    :<|> ((Maybe Text
           -> InsertSongContentsRequest
           -> Handler InsertSongContentsCommandResponse)
          :<|> ((Maybe Text -> UUID -> Handler ())
                :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))))
-> (Maybe Text -> SongArtworkOrderUpdateRequest -> Handler ())
   :<|> ((Maybe Text -> SongDeltaRequest -> Handler ())
         :<|> ((Maybe Text
                -> InsertSongContentsRequest
                -> Handler InsertSongContentsCommandResponse)
               :<|> ((Maybe Text -> UUID -> Handler ())
                     :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> SongDeltaRequest -> Handler ()
updateSongRoute Env
env
    (Maybe Text -> SongDeltaRequest -> Handler ())
-> ((Maybe Text
     -> InsertSongContentsRequest
     -> Handler InsertSongContentsCommandResponse)
    :<|> ((Maybe Text -> UUID -> Handler ())
          :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())))
-> (Maybe Text -> SongDeltaRequest -> Handler ())
   :<|> ((Maybe Text
          -> InsertSongContentsRequest
          -> Handler InsertSongContentsCommandResponse)
         :<|> ((Maybe Text -> UUID -> Handler ())
               :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InsertSongContentsRequest
-> Handler InsertSongContentsCommandResponse
insertSongContentsRoute Env
env
    (Maybe Text
 -> InsertSongContentsRequest
 -> Handler InsertSongContentsCommandResponse)
-> ((Maybe Text -> UUID -> Handler ())
    :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))
-> (Maybe Text
    -> InsertSongContentsRequest
    -> Handler InsertSongContentsCommandResponse)
   :<|> ((Maybe Text -> UUID -> Handler ())
         :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> UUID -> Handler ()
deleteSongContentsByIdentifierRoute Env
env
    (Maybe Text -> UUID -> Handler ())
-> (Maybe Text -> SongContentDeltaRequest -> Handler ())
-> (Maybe Text -> UUID -> Handler ())
   :<|> (Maybe Text -> SongContentDeltaRequest -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> SongContentDeltaRequest -> Handler ()
updateSongContentsRoute Env
env

authHandlers :: Env -> Server AuthAPI
authHandlers :: Env -> Server AuthAPI
authHandlers Env
env =
  Env -> Maybe Text -> Handler GetMeQueryResponse
fetchMeRoute Env
env
    (Maybe Text -> Handler GetMeQueryResponse)
-> ((Maybe Text
     -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
    :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))
-> (Maybe Text -> Handler GetMeQueryResponse)
   :<|> ((Maybe Text
          -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
         :<|> (Maybe Text -> DeleteUsersRequest -> Handler ()))
forall a b. a -> b -> a :<|> b
:<|> Env
-> Maybe Text
-> InviteUsersRequest
-> Handler MakeResetPasswordLinkResponse
inviteUserRoute Env
env
    (Maybe Text
 -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
-> (Maybe Text -> DeleteUsersRequest -> Handler ())
-> (Maybe Text
    -> InviteUsersRequest -> Handler MakeResetPasswordLinkResponse)
   :<|> (Maybe Text -> DeleteUsersRequest -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> Maybe Text -> DeleteUsersRequest -> Handler ()
deleteUserRoute Env
env

wiredUpPublicServer :: Env -> Server PublicAPI
wiredUpPublicServer :: Env
-> Server
     (("login"
       :> (ReqBody (JSON : NoIx) LoginRequest :> LoginRespondWithAuth))
      :<|> (("reset-password"
             :> (("email"
                  :> (Capture "email" Text
                      :> Post (JSON : NoIx) MakeResetPasswordLinkResponse))
                 :<|> ("do"
                       :> (ReqBody (JSON : NoIx) DoPasswordResetRequest
                           :> Verb 'POST 204 (JSON : NoIx) ()))))
            :<|> ("system-information"
                  :> Get (JSON : NoIx) SystemInformationResponse)))
wiredUpPublicServer Env
env =
  Env
-> LoginRequest -> Handler (Headers (WithAuth : NoIx) NoContent)
loginRoute Env
env
    (LoginRequest -> Handler (Headers (WithAuth : NoIx) NoContent))
-> (((Text -> Handler MakeResetPasswordLinkResponse)
     :<|> (DoPasswordResetRequest -> Handler ()))
    :<|> Handler SystemInformationResponse)
-> (LoginRequest -> Handler (Headers (WithAuth : NoIx) NoContent))
   :<|> (((Text -> Handler MakeResetPasswordLinkResponse)
          :<|> (DoPasswordResetRequest -> Handler ()))
         :<|> Handler SystemInformationResponse)
forall a b. a -> b -> a :<|> b
:<|> ( Env -> Text -> Handler MakeResetPasswordLinkResponse
makeResetPasswordLinkRoute Env
env
             (Text -> Handler MakeResetPasswordLinkResponse)
-> (DoPasswordResetRequest -> Handler ())
-> (Text -> Handler MakeResetPasswordLinkResponse)
   :<|> (DoPasswordResetRequest -> Handler ())
forall a b. a -> b -> a :<|> b
:<|> Env -> DoPasswordResetRequest -> Handler ()
doPasswordResetRoute Env
env
         )
    ((Text -> Handler MakeResetPasswordLinkResponse)
 :<|> (DoPasswordResetRequest -> Handler ()))
-> Handler SystemInformationResponse
-> ((Text -> Handler MakeResetPasswordLinkResponse)
    :<|> (DoPasswordResetRequest -> Handler ()))
   :<|> Handler SystemInformationResponse
forall a b. a -> b -> a :<|> b
:<|> Env -> Handler SystemInformationResponse
systemInformationRoute Env
env