1
0

Rename Blog types to Page

This commit is contained in:
PA4KEV 2023-06-17 19:57:28 +02:00
parent c358c7b2ff
commit a2896e140f
4 changed files with 46 additions and 44 deletions

View File

@ -1,39 +0,0 @@
module Blog
open System
open System.Threading.Tasks
open Microsoft.AspNetCore.Http
open Giraffe
[<CLIMutable>]
type BlogPost = {
title: string
content: string
}
type BlogDb() =
let mutable allBlogPosts : BlogPost list = []
member this.GetAllPosts = fun() -> allBlogPosts
member this.AddPost (newPost : BlogPost) =
allBlogPosts <- (newPost::allBlogPosts)
allBlogPosts
type BlogServiceTree = {
getBlogDb : unit -> BlogDb
}
let getPostsHttpHandler (serviceTree: BlogServiceTree) =
fun (next : HttpFunc) (ctx : HttpContext) ->
json (serviceTree.getBlogDb().GetAllPosts()) next ctx
let createPostHttpHandler (serviceTree: BlogServiceTree) =
fun (next : HttpFunc) (ctx : HttpContext) ->
task {
let! newPostJson = ctx.BindJsonAsync<BlogPost>()
serviceTree.getBlogDb().AddPost(newPostJson) |> ignore
return! json (newPostJson) next ctx
}

41
api/Page.fs Normal file
View File

@ -0,0 +1,41 @@
module Page
open System
open System.Threading.Tasks
open Microsoft.AspNetCore.Http
open Giraffe
[<CLIMutable>]
type Page = {
id: int
title: string
subtitle: string
content: string
}
type PageDb() =
let mutable allPages : Page list = []
member this.GetAllPosts = fun() -> allPages
member this.AddPost (newPage : Page) =
allPages <- (newPage::allPages)
allPages
type PageServiceTree = {
getPageDb : unit -> PageDb
}
let getPostsHttpHandler (serviceTree: PageServiceTree) =
fun (next : HttpFunc) (ctx : HttpContext) ->
json (serviceTree.getPageDb().GetAllPosts()) next ctx
let createPostHttpHandler (serviceTree: PageServiceTree) =
fun (next : HttpFunc) (ctx : HttpContext) ->
task {
let! newPostJson = ctx.BindJsonAsync<Page>()
serviceTree.getPageDb().AddPost(newPostJson) |> ignore
return! json (newPostJson) next ctx
}

View File

@ -5,20 +5,20 @@ open Microsoft.Extensions.Hosting
open Microsoft.Extensions.Logging
open Microsoft.Extensions.DependencyInjection
open Blog
open Page
open Giraffe
// Sources:
//https://hamy.xyz/labs/2022-12-simple-fsharp-web-api-giraffe
// https://hamy.xyz/labs/2022-12-simple-fsharp-web-api-giraffe
// https://github.com/SIRHAMY/fsharp-giraffe-blog-api-example
(* Web App Configuration *)
let webApp =
let blogDb = new BlogDb()
let pageDb = new PageDb()
let serviceTree = {
getBlogDb = fun() -> blogDb
getPageDb = fun() -> pageDb
}
choose[

View File

@ -5,7 +5,7 @@
<ItemGroup>
<Compile Include="Database.fs" />
<Compile Include="Controllers/PageController.fs" />
<Compile Include="Blog.fs" />
<Compile Include="Page.fs" />
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>