Our great sponsors
-
ghc
Mirror of the Glasgow Haskell Compiler. Please submit issues and patches to GHC's Gitlab instance (https://gitlab.haskell.org/ghc/ghc). First time contributors are encouraged to get started with the newcomers info (https://gitlab.haskell.org/ghc/ghc/wikis/contributing).
GHCi, version 9.4.2: https://www.haskell.org/ghc/ :? for help ghci> :load Evolution.hs [1 of 2] Compiling Main ( Evolution.hs, interpreted ) Ok, one module loaded. ghci> :t fac four fac four :: Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero)))))))))))))))))))))))
-
Indeed, this is exactly what squeal does. You define (or generate from your schema) a type-level description of your tables, including whether each column can be null or not, and squeal type-checks your SQL queries, including checking whether those fields should be wrapped in a Maybe or not. In the linked documentation, note how the user_id and email fields are defined:
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.