on 28aaa76 help sign in
rel8/src/Rel8/Type/Sum.hs
43 lines 994 B history raw
1{-# language DataKinds #-}
2{-# language FlexibleContexts #-}
3{-# language FlexibleInstances #-}
4{-# language MultiParamTypeClasses #-}
5{-# language TypeFamilies #-}
6{-# language StandaloneKindSignatures #-}
7{-# language UndecidableInstances #-}
9module Rel8.Type.Sum
10 ( DBSum
11 )
12where
14-- base
15import Data.Int ( Int16, Int32, Int64 )
16import Data.Kind ( Constraint, Type )
17import Prelude
19-- rel8
20import Rel8.Schema.Nullability ( HasNullability, Unnullify, Sql )
21import Rel8.Type ( DBType )
23-- scientific
24import Data.Scientific ( Scientific )
26-- time
27import Data.Time.LocalTime ( CalendarDiffTime )
30-- | The class of database types that support the @sum()@ aggregation function.
31type DBSum :: Type -> Constraint
32class DBType a => DBSum a
33instance DBSum Int16
34instance DBSum Int32
35instance DBSum Int64
36instance DBSum Float
37instance DBSum Double
38instance DBSum Scientific
39instance DBSum CalendarDiffTime
42instance {-# INCOHERENT #-} (HasNullability a, DBSum (Unnullify a)) =>
43 Sql DBSum a