packages feed

sqel-0.0.1.0: lib/Sqel/Data/Selector.hs

module Sqel.Data.Selector where

import Sqel.Data.Sql (Sql (Sql), ToSql (toSql), sql)
import Sqel.Text.Quote (dquote)

newtype Selector =
  Selector { unSelector :: Sql }
  deriving stock (Eq, Show, Generic, Ord)
  deriving newtype (IsString, Semigroup, Monoid)

textSelector :: Text -> Selector
textSelector =
  Selector . Sql

nameSelector :: Text -> Selector
nameSelector =
  textSelector . dquote

assign :: Selector -> Sql -> Sql
assign (Selector name) value =
  [sql|#{name} = #{value}|]

instance ToSql Selector where
  toSql = unSelector