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 [] [