{-# LANGUAGE
    DataKinds
  , DeriveAnyClass
  , DeriveGeneric
  , DuplicateRecordFields
  , FlexibleInstances
  , InstanceSigs
  , MultiParamTypeClasses
  , NamedFieldPuns
  , NumericUnderscores
  , OverloadedStrings
  , TypeApplications
  , ScopedTypeVariables
#-}

module ClickHaskell.Lock
  ( LockPart(..)
  , LockedColumn(..)
  , LockedParameter(..)
  ) where

import GHC.Generics (Generic)
import Data.Text (Text)

data LockPart =
  Table
    { LockPart -> Text
name :: Text
    , LockPart -> [LockedColumn]
columns :: [LockedColumn]
    }
  |
  View
    { name :: Text
    , columns :: [LockedColumn]
    , LockPart -> [LockedParameter]
parameters :: [LockedParameter]
    }
  deriving ((forall x. LockPart -> Rep LockPart x)
-> (forall x. Rep LockPart x -> LockPart) -> Generic LockPart
forall x. Rep LockPart x -> LockPart
forall x. LockPart -> Rep LockPart x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LockPart -> Rep LockPart x
from :: forall x. LockPart -> Rep LockPart x
$cto :: forall x. Rep LockPart x -> LockPart
to :: forall x. Rep LockPart x -> LockPart
Generic)




data LockedColumn = MkLockedColumn
  { LockedColumn -> Text
name :: Text
  , LockedColumn -> Text
columnType :: Text
  }
  deriving ((forall x. LockedColumn -> Rep LockedColumn x)
-> (forall x. Rep LockedColumn x -> LockedColumn)
-> Generic LockedColumn
forall x. Rep LockedColumn x -> LockedColumn
forall x. LockedColumn -> Rep LockedColumn x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LockedColumn -> Rep LockedColumn x
from :: forall x. LockedColumn -> Rep LockedColumn x
$cto :: forall x. Rep LockedColumn x -> LockedColumn
to :: forall x. Rep LockedColumn x -> LockedColumn
Generic)




data LockedParameter = MkLockedParameter
  { LockedParameter -> Text
name :: Text
  , LockedParameter -> Text
parameterType :: Text
  }
  deriving ((forall x. LockedParameter -> Rep LockedParameter x)
-> (forall x. Rep LockedParameter x -> LockedParameter)
-> Generic LockedParameter
forall x. Rep LockedParameter x -> LockedParameter
forall x. LockedParameter -> Rep LockedParameter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LockedParameter -> Rep LockedParameter x
from :: forall x. LockedParameter -> Rep LockedParameter x
$cto :: forall x. Rep LockedParameter x -> LockedParameter
to :: forall x. Rep LockedParameter x -> LockedParameter
Generic)