Rename Blog types to Page
This commit is contained in:
parent
c358c7b2ff
commit
a2896e140f
39
api/Blog.fs
39
api/Blog.fs
@ -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
41
api/Page.fs
Normal 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
|
||||
}
|
||||
|
||||
@ -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[
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user