on e6b7de2 help sign in
rel8/src/Rel8/Type/String.hs
45 lines 1.1 kB history raw
1{-# language FlexibleContexts #-}
2{-# language FlexibleInstances #-}
3{-# language MultiParamTypeClasses #-}
4{-# language StandaloneKindSignatures #-}
5{-# language UndecidableInstances #-}
7module Rel8.Type.String
8 ( DBString
9 )
10where
12-- base
13import Data.Kind ( Constraint, Type )
14import Prelude ()
16-- bytestring
17import Data.ByteString ( ByteString )
18import qualified Data.ByteString.Lazy as Lazy ( ByteString )
20-- case-insensitive
21import Data.CaseInsensitive ( CI )
23-- rel8
24import Rel8.Schema.Nullability ( HasNullability, Unnullify, Sql )
25import Rel8.Type ( DBType )
27-- text
28import Data.Text ( Text )
29import qualified Data.Text.Lazy as Lazy ( Text )
32-- | The class of data types that support the @string_agg()@ aggregation
33-- function.
34type DBString :: Type -> Constraint
35class DBType a => DBString a
36instance DBString Text
37instance DBString Lazy.Text
38instance DBString (CI Text)
39instance DBString (CI Lazy.Text)
40instance DBString ByteString
41instance DBString Lazy.ByteString
44instance {-# INCOHERENT #-} (HasNullability a, DBString (Unnullify a)) =>
45 Sql DBString a