module Db open FSharp.Data.Sql [] let ConnectionString = "Server=127.0.0.1; Database=todo_api_db; User Id=suave; Password=1234;" type Sql = SqlDataProvider module Context = type DbContext = Sql.dataContext let getContext() = Sql.GetDataContext() module Types = open Context open System.Runtime.Serialization type DbTodo = DbContext.``public.todosEntity`` [] type Todo = { [] id: int [] description: string [] name: string } let todoToRecord (todo: DbTodo) = { id = todo.Id description = todo.Description name = todo.Name } module Queries = open FSharpPlus.Operators open Context open Types let getTodosById id (ctx: DbContext): Todo option = query { for todo in ctx.Public.Todos do where (todo.Id = id) select todo } |> Seq.tryHead |>> todoToRecord