module Sqel.Data.MigrationParams where

newtype MigrationDefault a =
  MigrationDefault { forall a. MigrationDefault a -> a
unMigrationDefault :: a }
  deriving stock (MigrationDefault a -> MigrationDefault a -> Bool
forall a. Eq a => MigrationDefault a -> MigrationDefault a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MigrationDefault a -> MigrationDefault a -> Bool
$c/= :: forall a. Eq a => MigrationDefault a -> MigrationDefault a -> Bool
== :: MigrationDefault a -> MigrationDefault a -> Bool
$c== :: forall a. Eq a => MigrationDefault a -> MigrationDefault a -> Bool
Eq, Int -> MigrationDefault a -> ShowS
forall a. Show a => Int -> MigrationDefault a -> ShowS
forall a. Show a => [MigrationDefault a] -> ShowS
forall a. Show a => MigrationDefault a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MigrationDefault a] -> ShowS
$cshowList :: forall a. Show a => [MigrationDefault a] -> ShowS
show :: MigrationDefault a -> String
$cshow :: forall a. Show a => MigrationDefault a -> String
showsPrec :: Int -> MigrationDefault a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> MigrationDefault a -> ShowS
Show, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (MigrationDefault a) x -> MigrationDefault a
forall a x. MigrationDefault a -> Rep (MigrationDefault a) x
$cto :: forall a x. Rep (MigrationDefault a) x -> MigrationDefault a
$cfrom :: forall a x. MigrationDefault a -> Rep (MigrationDefault a) x
Generic)

type MigrationRename :: Symbol -> Type
data MigrationRename name =
  MigrationRename
  deriving stock (MigrationRename name -> MigrationRename name -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (name :: Symbol).
MigrationRename name -> MigrationRename name -> Bool
/= :: MigrationRename name -> MigrationRename name -> Bool
$c/= :: forall (name :: Symbol).
MigrationRename name -> MigrationRename name -> Bool
== :: MigrationRename name -> MigrationRename name -> Bool
$c== :: forall (name :: Symbol).
MigrationRename name -> MigrationRename name -> Bool
Eq, Int -> MigrationRename name -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (name :: Symbol). Int -> MigrationRename name -> ShowS
forall (name :: Symbol). [MigrationRename name] -> ShowS
forall (name :: Symbol). MigrationRename name -> String
showList :: [MigrationRename name] -> ShowS
$cshowList :: forall (name :: Symbol). [MigrationRename name] -> ShowS
show :: MigrationRename name -> String
$cshow :: forall (name :: Symbol). MigrationRename name -> String
showsPrec :: Int -> MigrationRename name -> ShowS
$cshowsPrec :: forall (name :: Symbol). Int -> MigrationRename name -> ShowS
Show, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (name :: Symbol) x.
Rep (MigrationRename name) x -> MigrationRename name
forall (name :: Symbol) x.
MigrationRename name -> Rep (MigrationRename name) x
$cto :: forall (name :: Symbol) x.
Rep (MigrationRename name) x -> MigrationRename name
$cfrom :: forall (name :: Symbol) x.
MigrationRename name -> Rep (MigrationRename name) x
Generic)

type family MigrationRenameK (ps :: [Type]) :: Maybe Symbol where
  MigrationRenameK '[] = 'Nothing
  MigrationRenameK (MigrationRename name : _) = 'Just name
  MigrationRenameK (_ : ps) = MigrationRenameK ps

type MigrationRenameType :: Symbol -> Type
data MigrationRenameType name =
  MigrationRenameType
  deriving stock (MigrationRenameType name -> MigrationRenameType name -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (name :: Symbol).
MigrationRenameType name -> MigrationRenameType name -> Bool
/= :: MigrationRenameType name -> MigrationRenameType name -> Bool
$c/= :: forall (name :: Symbol).
MigrationRenameType name -> MigrationRenameType name -> Bool
== :: MigrationRenameType name -> MigrationRenameType name -> Bool
$c== :: forall (name :: Symbol).
MigrationRenameType name -> MigrationRenameType name -> Bool
Eq, Int -> MigrationRenameType name -> ShowS
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (name :: Symbol). Int -> MigrationRenameType name -> ShowS
forall (name :: Symbol). [MigrationRenameType name] -> ShowS
forall (name :: Symbol). MigrationRenameType name -> String
showList :: [MigrationRenameType name] -> ShowS
$cshowList :: forall (name :: Symbol). [MigrationRenameType name] -> ShowS
show :: MigrationRenameType name -> String
$cshow :: forall (name :: Symbol). MigrationRenameType name -> String
showsPrec :: Int -> MigrationRenameType name -> ShowS
$cshowsPrec :: forall (name :: Symbol). Int -> MigrationRenameType name -> ShowS
Show, forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (name :: Symbol) x.
Rep (MigrationRenameType name) x -> MigrationRenameType name
forall (name :: Symbol) x.
MigrationRenameType name -> Rep (MigrationRenameType name) x
$cto :: forall (name :: Symbol) x.
Rep (MigrationRenameType name) x -> MigrationRenameType name
$cfrom :: forall (name :: Symbol) x.
MigrationRenameType name -> Rep (MigrationRenameType name) x
Generic)

type family MigrationRenameTypeK (ps :: [Type]) :: Maybe Symbol where
  MigrationRenameTypeK '[] = 'Nothing
  MigrationRenameTypeK (MigrationRenameType name : _) = 'Just name
  MigrationRenameTypeK (_ : ps) = MigrationRenameTypeK ps

data MigrationDelete =
  MigrationDelete
  deriving stock (MigrationDelete -> MigrationDelete -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MigrationDelete -> MigrationDelete -> Bool
$c/= :: MigrationDelete -> MigrationDelete -> Bool
== :: MigrationDelete -> MigrationDelete -> Bool
$c== :: MigrationDelete -> MigrationDelete -> Bool
Eq, Int -> MigrationDelete -> ShowS
[MigrationDelete] -> ShowS
MigrationDelete -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MigrationDelete] -> ShowS
$cshowList :: [MigrationDelete] -> ShowS
show :: MigrationDelete -> String
$cshow :: MigrationDelete -> String
showsPrec :: Int -> MigrationDelete -> ShowS
$cshowsPrec :: Int -> MigrationDelete -> ShowS
Show, forall x. Rep MigrationDelete x -> MigrationDelete
forall x. MigrationDelete -> Rep MigrationDelete x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MigrationDelete x -> MigrationDelete
$cfrom :: forall x. MigrationDelete -> Rep MigrationDelete x
Generic)

type family MigrationDeleteK (ps :: [Type]) :: Bool where
  MigrationDeleteK '[] = 'False
  MigrationDeleteK (MigrationDelete : _) = 'True
  MigrationDeleteK (_ : ps) = MigrationDeleteK ps