on bdf2d87 help sign in
rel8/src/Rel8/Type/Ord.hs
124 lines 3.0 kB history raw
1{-# language FlexibleContexts #-}
2{-# language FlexibleInstances #-}
3{-# language MonoLocalBinds #-}
4{-# language MultiParamTypeClasses #-}
5{-# language StandaloneKindSignatures #-}
6{-# language UndecidableInstances #-}
8module Rel8.Type.Ord
9 ( DBOrd
10 , DBMax, DBMin
11 )
12where
14-- base
15import Data.Int ( Int16, Int32, Int64 )
16import Data.Kind ( Constraint, Type )
17import Data.List.NonEmpty ( NonEmpty )
18import Prelude
20-- bytestring
21import Data.ByteString ( ByteString )
22import qualified Data.ByteString.Lazy as Lazy ( ByteString )
24-- case-insensitive
25import Data.CaseInsensitive ( CI )
27-- rel8
28import Rel8.Schema.Null ( Sql )
29import Rel8.Type.Eq ( DBEq )
31-- scientific
32import Data.Scientific ( Scientific )
34-- text
35import Data.Text ( Text )
36import qualified Data.Text.Lazy as Lazy ( Text )
38-- time
39import Data.Time.Calendar ( Day )
40import Data.Time.Clock ( UTCTime )
41import Data.Time.LocalTime ( CalendarDiffTime, LocalTime, TimeOfDay )
43-- uuid
44import Data.UUID ( UUID )
47-- | The class of database types that support the @<@, @<=@, @>@ and @>=@
48-- operators.
49type DBOrd :: Type -> Constraint
50class DBEq a => DBOrd a
51instance DBOrd Bool
52instance DBOrd Char
53instance DBOrd Int16
54instance DBOrd Int32
55instance DBOrd Int64
56instance DBOrd Float
57instance DBOrd Double
58instance DBOrd Scientific
59instance DBOrd UTCTime
60instance DBOrd Day
61instance DBOrd LocalTime
62instance DBOrd TimeOfDay
63instance DBOrd CalendarDiffTime
64instance DBOrd Text
65instance DBOrd Lazy.Text
66instance DBOrd (CI Text)
67instance DBOrd (CI Lazy.Text)
68instance DBOrd ByteString
69instance DBOrd Lazy.ByteString
70instance DBOrd UUID
71instance Sql DBOrd a => DBOrd [a]
72instance Sql DBOrd a => DBOrd (NonEmpty a)
75-- | The class of database types that support the @max@ aggregation function.
76type DBMax :: Type -> Constraint
77class DBOrd a => DBMax a
78instance DBMax Bool
79instance DBMax Char
80instance DBMax Int16
81instance DBMax Int32
82instance DBMax Int64
83instance DBMax Float
84instance DBMax Double
85instance DBMax Scientific
86instance DBMax UTCTime
87instance DBMax Day
88instance DBMax LocalTime
89instance DBMax TimeOfDay
90instance DBMax CalendarDiffTime
91instance DBMax Text
92instance DBMax Lazy.Text
93instance DBMax (CI Text)
94instance DBMax (CI Lazy.Text)
95instance DBMax ByteString
96instance DBMax Lazy.ByteString
97instance Sql DBMax a => DBMax [a]
98instance Sql DBMax a => DBMax (NonEmpty a)
101-- | The class of database types that support the @min@ aggregation function.
102type DBMin :: Type -> Constraint
103class DBOrd a => DBMin a
104instance DBMin Bool
105instance DBMin Char
106instance DBMin Int16
107instance DBMin Int32
108instance DBMin Int64
109instance DBMin Float
110instance DBMin Double
111instance DBMin Scientific
112instance DBMin UTCTime
113instance DBMin Day
114instance DBMin LocalTime
115instance DBMin TimeOfDay
116instance DBMin CalendarDiffTime
117instance DBMin Text
118instance DBMin Lazy.Text
119instance DBMin (CI Text)
120instance DBMin (CI Lazy.Text)
121instance DBMin ByteString
122instance DBMin Lazy.ByteString
123instance Sql DBMin a => DBMin [a]
124instance Sql DBMin a => DBMin (NonEmpty a)