diff --git a/frameworks/FSharp/falco/src/App/App.fsproj b/frameworks/FSharp/falco/src/App/App.fsproj index d6b5bd70732..6c7dcff0aba 100644 --- a/frameworks/FSharp/falco/src/App/App.fsproj +++ b/frameworks/FSharp/falco/src/App/App.fsproj @@ -15,6 +15,7 @@ + diff --git a/frameworks/FSharp/falco/src/App/Program.fs b/frameworks/FSharp/falco/src/App/Program.fs index 6a974bfc230..7d6f19e5584 100644 --- a/frameworks/FSharp/falco/src/App/Program.fs +++ b/frameworks/FSharp/falco/src/App/Program.fs @@ -1,6 +1,7 @@ module Program open System.Data +open Dapper open Falco open Falco.Markup open Falco.Routing @@ -26,38 +27,15 @@ type Fortune = message = "Additional fortune added at request time." } let handleFortunes (connStr : string) : HttpHandler = fun ctx -> task { - use conn = new NpgsqlConnection(connStr) - - use comd = conn.CreateCommand() - comd.CommandText <- "SELECT id, message FROM fortune" - - do! conn.OpenAsync() - use! redr = comd.ExecuteReaderAsync(CommandBehavior.SequentialAccess) - - let! dbFortunes = - task { - let mutable shouldContinue = true - let fortunes = ResizeArray() - while shouldContinue do - let! fortunesRead = redr.ReadAsync() - - if not fortunesRead then - shouldContinue <- false - else - fortunes.Add { id = redr.GetInt32(0) - message = redr.GetString(1) } - return fortunes |> List.ofSeq - } - - redr.Dispose() - comd.Dispose() - conn.Dispose() + use conn = new NpgsqlConnection(connStr) + let! data = conn.QueryAsync("SELECT id, message FROM fortune") + let fortunes = data.AsList() + fortunes.Add(Fortune.Default) let sortedFortunes = - Fortune.Default :: - dbFortunes - |> List.sortBy (fun f -> f.message) + fortunes + |> Seq.sortBy (fun f -> f.message) let html = Elem.html [] [