{-# 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