Here's a simple query with variable interpolation:
getBadge
:: MonadIO m
=> BadgeId
-> SqlPersistT m [Entity BadgeEvent]
getBadge badgeId =
[sqlQQ|
SELECT
Here's a simple query with variable interpolation:
getBadge
:: MonadIO m
=> BadgeId
-> SqlPersistT m [Entity BadgeEvent]
getBadge badgeId =
[sqlQQ|
SELECT
{-# LANGUAGE DerivingStrategies #-} | |
{-# LANGUAGE GeneralizedNewtypeDeriving #-} | |
{-# LANGUAGE MagicHash #-} | |
{-# LANGUAGE StrictData #-} | |
{-# LANGUAGE FlexibleContexts #-} | |
import Control.Monad.State | |
import Data.Map.Strict (Map, (!)) | |
import qualified Data.Map.Strict as Map | |
import Prelude hiding (log, sum) |
-- An unserious response to | |
-- | |
-- > I will believe in type systems the day one of them warns me about this code: | |
-- > pub fn add_two_integers(num1: Int, num2: Int) -> Int { | |
-- > num1 - num2 | |
-- > } | |
-- | |
-- I don't understand why people don't want to program like this. Types! | |
{-# LANGUAGE AllowAmbiguousTypes #-} |
{-# LANGUAGE AllowAmbiguousTypes #-} | |
{-# LANGUAGE ConstraintKinds #-} | |
{-# LANGUAGE DataKinds #-} | |
{-# LANGUAGE FlexibleContexts #-} | |
{-# LANGUAGE FlexibleInstances #-} | |
{-# LANGUAGE FunctionalDependencies #-} | |
{-# LANGUAGE GADTs #-} | |
{-# LANGUAGE ScopedTypeVariables #-} | |
{-# LANGUAGE TypeApplications #-} | |
{-# LANGUAGE TypeFamilies #-} |