module Rel8.Expr.Sequence
  ( nextval
  )
where

-- base
import Data.Int ( Int64 )
import Prelude

-- opaleye
import qualified Opaleye.Internal.HaskellDB.PrimQuery as Opaleye

-- rel8
import Rel8.Expr ( Expr )
import Rel8.Expr.Opaleye (fromPrimExpr)
import Rel8.Schema.QualifiedName (QualifiedName, showQualifiedName)


-- | See https://www.postgresql.org/docs/current/functions-sequence.html
nextval :: QualifiedName -> Expr Int64
nextval :: QualifiedName -> Expr Int64
nextval QualifiedName
name =
  PrimExpr -> Expr Int64
forall a. PrimExpr -> Expr a
fromPrimExpr (PrimExpr -> Expr Int64) -> PrimExpr -> Expr Int64
forall a b. (a -> b) -> a -> b
$
    Name -> [PrimExpr] -> PrimExpr
Opaleye.FunExpr Name
"nextval"
      [ Literal -> PrimExpr
Opaleye.ConstExpr (Name -> Literal
Opaleye.StringLit (QualifiedName -> Name
showQualifiedName QualifiedName
name))
      ]