module Hasura.Backends.Postgres.Types.Table
( mutableView,
)
where
import Data.Text.Extended
import Hasura.Backends.Postgres.SQL.Types
import Hasura.Base.Error
import Hasura.Prelude
import Hasura.Table.Cache
mutableView ::
(MonadError QErr m) =>
QualifiedTable ->
(ViewInfo -> Bool) ->
Maybe ViewInfo ->
Text ->
m ()
mutableView :: forall (m :: * -> *).
MonadError QErr m =>
QualifiedTable
-> (ViewInfo -> Bool) -> Maybe ViewInfo -> Text -> m ()
mutableView QualifiedTable
qt ViewInfo -> Bool
f Maybe ViewInfo
mVI Text
operation =
Bool -> m () -> m ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless ((ViewInfo -> Bool) -> Maybe ViewInfo -> Bool
isMutable ViewInfo -> Bool
f Maybe ViewInfo
mVI)
(m () -> m ()) -> m () -> m ()
forall a b. (a -> b) -> a -> b
$ Code -> Text -> m ()
forall (m :: * -> *) a. QErrM m => Code -> Text -> m a
throw400 Code
NotSupported
(Text -> m ()) -> Text -> m ()
forall a b. (a -> b) -> a -> b
$ Text
"view "
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> QualifiedTable
qt
QualifiedTable -> Text -> Text
forall t. ToTxt t => t -> Text -> Text
<<> Text
" is not "
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
operation