packages feed

sqel-0.0.1.0: lib/Sqel/Data/MigrationParams.hs

module Sqel.Data.MigrationParams where

newtype MigrationDefault a =
  MigrationDefault { unMigrationDefault :: a }
  deriving stock (Eq, Show, Generic)

type MigrationRename :: Symbol -> Type
data MigrationRename name =
  MigrationRename
  deriving stock (Eq, Show, 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 (Eq, Show, 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 (Eq, Show, Generic)

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