Added functions for generating type-safe links.
authorsabadev <saba@sabadev.xyz>
Sun, 21 Mar 2021 16:31:00 +0000 (12:31 -0400)
committersabadev <dev@sabadev.xyz>
Tue, 13 Apr 2021 01:16:33 +0000 (21:16 -0400)
src/ApiTypes.hs

index 0d1ad9a..47a95f3 100644 (file)
@@ -11,10 +11,28 @@ type Api = Page :<|> Themes
 type Page = MainPage :<|> BlogPost
 type MainPage = ThemeParam :> Get '[HTML] (Html ())
 type BlogPost = ThemeParam :> Capture "id" BlogId :> Get '[HTML] (Html ())
-type Themes = "style" :> (DarkTheme :<|> LightTheme)
-type DarkTheme = "dark" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
-type LightTheme = "light" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
+type Themes = DarkTheme :<|> LightTheme
+type DarkTheme = "style" :> "dark" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
+type LightTheme = "style" :> "light" :> QueryParam "red" Integer :> QueryParam "green" Integer :> QueryParam "blue" Integer :> Get '[CSS] C.Css
 type ThemeParam = QueryParam "theme" Theme
 
 apiProxy :: Proxy Api
 apiProxy = Proxy
+
+blogProxy :: Proxy BlogPost
+blogProxy = Proxy
+
+darkThemeProxy :: Proxy DarkTheme
+darkThemeProxy = Proxy
+
+lightThemeProxy :: Proxy LightTheme
+lightThemeProxy = Proxy
+
+safeBlogLink :: MkLink BlogPost Link
+safeBlogLink = safeLink apiProxy blogProxy
+
+safeDarkThemeLink :: MkLink DarkTheme Link
+safeDarkThemeLink = safeLink apiProxy darkThemeProxy
+
+safeLightThemeLink :: MkLink LightTheme Link
+safeLightThemeLink = safeLink apiProxy lightThemeProxy