packages feed

project-m36-1.0.0: src/bin/SQL/Interpreter/Update.hs

module SQL.Interpreter.Update where
import SQL.Interpreter.Select
import ProjectM36.SQL.Update
import SQL.Interpreter.Base
import ProjectM36.Interpreter
import Control.Applicative
import Text.Megaparsec

updateP :: Parser Update
updateP = do
  reserved "update"
  tname <- tableNameP
  --mTAlias <- try (reserved "as" *> (Just <$> tableAliasP)) <|> pure Nothing
  reserved "set"
  setCols <- sepByComma1 $ do
    calias <- unqualifiedColumnNameP
    reserved "="
    sexpr <- scalarExprP
    pure (calias, sexpr)
  mWhere <- try (Just <$> whereP) <|> pure Nothing
  pure (Update {
           target = tname,
--           targetAlias = mTAlias,
           setColumns = setCols,
           mRestriction = mWhere
           })