Programs as Values Pure Composable Database Access in Scala
summary
doobie presents a practical programs-as-values design: the low-level API is machine-generated low-level API that models roughly 190 JDBC operations as an algebra and implements them with free monads over algebras of the JDBC types, so programs are pure data and get interpreted into IO/Task. it builds streaming result sets, stack-safe traversal, rich exception handling (including hundreds of Postgres error codes), a transactor abstraction, query typechecking, and it demonstrably runs against real databases.
AI-written summary · about
chapters (20)
- 0:00Intro
- 0:38What's this about?
- 2:02The Problem
- 3:46The Strategy
- 4:21Primitives
- 9:09Spare a Monad?
- 10:14Wait, what?
- 11:04Programming
- 12:26Functor Operations
- 13:04Applicative Operations
- 15:28Monad Operations
- 16:39Interpreting
- 17:59Running
- 18:33Fine. What's doobie?
- 19:33Exception Handling
- 20:44Mapping via Typeclass
- 21:35Streaming
- 22:30High-Level API
- 24:40YOLO MODE
- 28:59Moar Info
related talks
24mRex "Doobie": A Functional JDBC That Doesn't Hide SQL
52mSpecializing the Reader Monad for Pure Database Programming
09mA DSL for My NoSQL Database
31mQuill + Doobie = Better Together
54mPure Functional Database Programming‚ without JDBC
26mReactive Java Programming: a new Asynchronous Database...
48mCompositional, Expressive, Performant Database Queries: Choose 3
43mHow to pretend we don't have a database
