@@ -30,20 +30,6 @@ import qualified Data.ByteString.Char8 as Char8
31import Squeel.PostgreSQL.Type
31import Squeel.PostgreSQL.Type
33−newtype Expression ps xs y =
34− UnsafeExpression { renderExpression :: ByteString }
36−param1 :: Expression (p1:ps) cols p1
37−param1 = UnsafeExpression "$1"
38−param2 :: Expression (p1:p2:ps) cols p2
39−param2 = UnsafeExpression "$2"
40−param3 :: Expression (p1:p2:p3:ps) cols p3
41−param3 = UnsafeExpression "$3"
42−param4 :: Expression (p1:p2:p3:p4:ps) cols p4
43−param4 = UnsafeExpression "$4"
44−param5 :: Expression (p1:p2:p3:p4:p5:ps) cols p5
45−param5 = UnsafeExpression "$5"
47class HasField label xs x where
33class HasField label xs x where
48 fieldName :: Proxy label -> Proxy xs -> Proxy x -> ByteString
34 fieldName :: Proxy label -> Proxy xs -> Proxy x -> ByteString
49instance {-# OVERLAPPING #-} KnownSymbol label
35instance {-# OVERLAPPING #-} KnownSymbol label
@@ -53,10 +39,6 @@ instance {-# OVERLAPPABLE #-} HasField label xs y
53 => HasField label (x ': xs) y where
39 => HasField label (x ': xs) y where
54 fieldName _ _ _ = fieldName (Proxy @label) (Proxy @xs) (Proxy @y)
40 fieldName _ _ _ = fieldName (Proxy @label) (Proxy @xs) (Proxy @y)
56−instance HasField label xs x => IsLabel label (Expression ps xs x) where
57− fromLabel _ = UnsafeExpression $
58− fieldName (Proxy @label) (Proxy @xs) (Proxy @x)
60data Alias label = Alias
42data Alias label = Alias
61data Aliased obj labeled where
43data Aliased obj labeled where
62 As :: obj x -> Alias label -> Aliased obj '(label, x)
44 As :: obj x -> Alias label -> Aliased obj '(label, x)
@@ -94,6 +76,24 @@ instance (KnownSymbol label, AllAliased (x' ': xs))
94 (x :& xs :: Rec (Aliased obj) ('(label, x) ': x' : xs)) =
76 (x :& xs :: Rec (Aliased obj) ('(label, x) ': x' : xs)) =
95 renderAliased render x <> ", " <> renderAllAliased render xs
77 renderAliased render x <> ", " <> renderAllAliased render xs
79+newtype Expression ps xs y =
80+ UnsafeExpression { renderExpression :: ByteString }
82+param1 :: Expression (p1:ps) cols p1
83+param1 = UnsafeExpression "$1"
84+param2 :: Expression (p1:p2:ps) cols p2
85+param2 = UnsafeExpression "$2"
86+param3 :: Expression (p1:p2:p3:ps) cols p3
87+param3 = UnsafeExpression "$3"
88+param4 :: Expression (p1:p2:p3:p4:ps) cols p4
89+param4 = UnsafeExpression "$4"
90+param5 :: Expression (p1:p2:p3:p4:p5:ps) cols p5
91+param5 = UnsafeExpression "$5"
93+instance HasField label xs x => IsLabel label (Expression ps xs x) where
94+ fromLabel _ = UnsafeExpression $
95+ fieldName (Proxy @label) (Proxy @xs) (Proxy @x)
97instance IsString (Expression ps xs 'PGText) where
97instance IsString (Expression ps xs 'PGText) where
98 fromString str = UnsafeExpression $ "\'" <> fromString str <> "\'"
98 fromString str = UnsafeExpression $ "\'" <> fromString str <> "\'"