module Sqel.Data.Selector where import Sqel.Data.Sql (Sql (Sql), ToSql (toSql), sql) import Sqel.Text.Quote (dquote) newtype Selector = Selector { Selector -> Sql unSelector :: Sql } deriving stock (Selector -> Selector -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Selector -> Selector -> Bool $c/= :: Selector -> Selector -> Bool == :: Selector -> Selector -> Bool $c== :: Selector -> Selector -> Bool Eq, Int -> Selector -> ShowS [Selector] -> ShowS Selector -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Selector] -> ShowS $cshowList :: [Selector] -> ShowS show :: Selector -> String $cshow :: Selector -> String showsPrec :: Int -> Selector -> ShowS $cshowsPrec :: Int -> Selector -> ShowS Show, forall x. Rep Selector x -> Selector forall x. Selector -> Rep Selector x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Selector x -> Selector $cfrom :: forall x. Selector -> Rep Selector x Generic, Eq Selector Selector -> Selector -> Bool Selector -> Selector -> Ordering Selector -> Selector -> Selector forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Selector -> Selector -> Selector $cmin :: Selector -> Selector -> Selector max :: Selector -> Selector -> Selector $cmax :: Selector -> Selector -> Selector >= :: Selector -> Selector -> Bool $c>= :: Selector -> Selector -> Bool > :: Selector -> Selector -> Bool $c> :: Selector -> Selector -> Bool <= :: Selector -> Selector -> Bool $c<= :: Selector -> Selector -> Bool < :: Selector -> Selector -> Bool $c< :: Selector -> Selector -> Bool compare :: Selector -> Selector -> Ordering $ccompare :: Selector -> Selector -> Ordering Ord) deriving newtype (String -> Selector forall a. (String -> a) -> IsString a fromString :: String -> Selector $cfromString :: String -> Selector IsString, NonEmpty Selector -> Selector Selector -> Selector -> Selector forall b. Integral b => b -> Selector -> Selector forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a stimes :: forall b. Integral b => b -> Selector -> Selector $cstimes :: forall b. Integral b => b -> Selector -> Selector sconcat :: NonEmpty Selector -> Selector $csconcat :: NonEmpty Selector -> Selector <> :: Selector -> Selector -> Selector $c<> :: Selector -> Selector -> Selector Semigroup, Semigroup Selector Selector [Selector] -> Selector Selector -> Selector -> Selector forall a. Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a mconcat :: [Selector] -> Selector $cmconcat :: [Selector] -> Selector mappend :: Selector -> Selector -> Selector $cmappend :: Selector -> Selector -> Selector mempty :: Selector $cmempty :: Selector Monoid) textSelector :: Text -> Selector textSelector :: Text -> Selector textSelector = Sql -> Selector Selector forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> Sql Sql nameSelector :: Text -> Selector nameSelector :: Text -> Selector nameSelector = Text -> Selector textSelector forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Exon a => a -> a dquote assign :: Selector -> Sql -> Sql assign :: Selector -> Sql -> Sql assign (Selector Sql name) Sql value = [sql|#{name} = #{value}|] instance ToSql Selector where toSql :: Selector -> Sql toSql = Selector -> Sql unSelector