From a2896e140f930303909efd2bc63c1f28a452a6fb Mon Sep 17 00:00:00 2001 From: PA4KEV Date: Sat, 17 Jun 2023 19:57:28 +0200 Subject: [PATCH] Rename Blog types to Page --- api/Blog.fs | 39 --------------------------------------- api/Page.fs | 41 +++++++++++++++++++++++++++++++++++++++++ api/Program.fs | 8 ++++---- api/api.fsproj | 2 +- 4 files changed, 46 insertions(+), 44 deletions(-) delete mode 100644 api/Blog.fs create mode 100644 api/Page.fs diff --git a/api/Blog.fs b/api/Blog.fs deleted file mode 100644 index d6600e3..0000000 --- a/api/Blog.fs +++ /dev/null @@ -1,39 +0,0 @@ -module Blog - -open System -open System.Threading.Tasks -open Microsoft.AspNetCore.Http -open Giraffe - -[] -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() - serviceTree.getBlogDb().AddPost(newPostJson) |> ignore - return! json (newPostJson) next ctx - } - diff --git a/api/Page.fs b/api/Page.fs new file mode 100644 index 0000000..197aeb5 --- /dev/null +++ b/api/Page.fs @@ -0,0 +1,41 @@ +module Page + +open System +open System.Threading.Tasks +open Microsoft.AspNetCore.Http +open Giraffe + +[] +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() + serviceTree.getPageDb().AddPost(newPostJson) |> ignore + return! json (newPostJson) next ctx + } + diff --git a/api/Program.fs b/api/Program.fs index 9726357..a927e98 100644 --- a/api/Program.fs +++ b/api/Program.fs @@ -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[ diff --git a/api/api.fsproj b/api/api.fsproj index 2a36469..9a27ec3 100644 --- a/api/api.fsproj +++ b/api/api.fsproj @@ -5,7 +5,7 @@ - +