-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A minimally obtrusive feature flag library -- -- A minimally obtrusive feature flag library @package feature-flipper-postgres @version 0.1.0.1 module Control.Flipper.Adapters.Postgres.Models data Feature Feature :: !FeatureName -> !Bool -> !UTCTime -> !UTCTime -> Feature [featureName] :: Feature -> !FeatureName [featureEnabled] :: Feature -> !Bool [featureUpdated] :: Feature -> !UTCTime [featureCreated] :: Feature -> !UTCTime type FeatureId = Key Feature migrateAll :: Migration -- | Convienience constructor mkFeature :: FeatureName -> Bool -> IO Feature -- | Performs non-destructive database schema migrations. runMigrations :: ConnectionPool -> IO [Text] instance GHC.Classes.Eq Control.Flipper.Adapters.Postgres.Models.Feature instance GHC.Show.Show Control.Flipper.Adapters.Postgres.Models.Feature instance Data.Aeson.Types.FromJSON.FromJSON (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Data.Aeson.Types.ToJSON.ToJSON (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Database.Persist.Sql.Class.PersistFieldSql (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Database.Persist.Class.PersistField.PersistField (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Web.Internal.HttpApiData.FromHttpApiData (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Web.Internal.HttpApiData.ToHttpApiData (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Web.PathPieces.PathPiece (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance GHC.Classes.Ord (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance GHC.Classes.Eq (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance GHC.Read.Read (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance GHC.Show.Show (Database.Persist.Class.PersistEntity.Key Control.Flipper.Adapters.Postgres.Models.Feature) instance Database.Persist.Class.PersistField.PersistField Control.Flipper.Adapters.Postgres.Models.Feature instance Database.Persist.Sql.Class.PersistFieldSql Control.Flipper.Adapters.Postgres.Models.Feature instance Database.Persist.Class.PersistEntity.PersistEntity Control.Flipper.Adapters.Postgres.Models.Feature instance Database.Persist.Class.PersistStore.ToBackendKey Database.Persist.Sql.Types.Internal.SqlBackend Control.Flipper.Adapters.Postgres.Models.Feature instance Database.Persist.Class.PersistField.PersistField Control.Flipper.Types.FeatureName module Control.Flipper.Adapters.Postgres.Internal.Query -- | Selects all feature records selectFeatures :: SqlPersistT IO [Entity Feature] -- | Selects a feature record by its unique name findFeature :: FeatureName -> SqlPersistT IO (Maybe (Entity Feature)) -- | Inserts a new feature record. insertFeature :: Feature -> SqlPersistT IO (Key Feature) -- | Updates an existing feature record. updateFeature :: FeatureId -> Feature -> SqlPersistT IO () -- | Returns a count of all feature records countFeatures :: SqlPersistT IO Int module Control.Flipper.Adapters.Postgres.DBAccess -- | Database query interface data DBAccess m DBAccess :: (forall a. m a -> IO a) -> m [Entity Feature] -> (FeatureName -> m (Maybe (Entity Feature))) -> (Feature -> m (Key Feature)) -> (FeatureId -> Feature -> m ()) -> m Int -> DBAccess m [runDb] :: DBAccess m -> forall a. m a -> IO a [selectFeatures] :: DBAccess m -> m [Entity Feature] [findFeature] :: DBAccess m -> FeatureName -> m (Maybe (Entity Feature)) [insertFeature] :: DBAccess m -> Feature -> m (Key Feature) [updateFeature] :: DBAccess m -> FeatureId -> Feature -> m () [countFeatures] :: DBAccess m -> m Int -- | Creates a DBAccess backed by a SqlPersistT context db :: ConnectionPool -> DBAccess (SqlPersistT IO) module Control.Flipper.Adapters.Postgres.Query -- | Selects all feature records getFeatures :: (MonadIO app, Monad m) => DBAccess m -> app [Entity Feature] -- | Selects a feature record by its unique name getFeatureByName :: (MonadIO app, Monad m) => FeatureName -> DBAccess m -> app (Maybe (Entity Feature)) -- | Inserts a new feature record. addFeature :: (MonadIO app, Monad m) => Feature -> DBAccess m -> app (Key Feature) -- | Updates an existing feature record. replaceFeature :: (MonadIO app, Monad m) => FeatureId -> Feature -> DBAccess m -> app () -- | Inserts a new feature record if one with a matching name does not -- already exist. Updates an existing feature record if one with a -- matching name already exists. upsertFeature :: (MonadIO app, Monad m) => FeatureName -> Bool -> DBAccess m -> app () -- | Returns a count of all feature records featureCount :: (MonadIO app, Monad m) => DBAccess m -> app Int -- | Convienience constructor mkFeature :: FeatureName -> Bool -> IO Feature module Control.Flipper.Adapters.Postgres data Config Config :: ConnectionPool -> DBAccess m -> Config [appDBConn] :: Config -> ConnectionPool [appDB] :: Config -> DBAccess m -- | The FlipperT transformer for postgres-persisted feature -- switchable computation. newtype FlipperT m a FlipperT :: ReaderT Config m a -> FlipperT m a [unFlipper] :: FlipperT m a -> ReaderT Config m a -- | Evaluates a feature-switched computation, returning the final value runFlipperT :: (MonadIO m) => ConnectionPool -> FlipperT m a -> m a instance Control.Monad.Trans.Class.MonadTrans Control.Flipper.Adapters.Postgres.FlipperT instance GHC.Base.Monad m => Control.Monad.Reader.Class.MonadReader Control.Flipper.Adapters.Postgres.Config (Control.Flipper.Adapters.Postgres.FlipperT m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Flipper.Adapters.Postgres.FlipperT m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Flipper.Adapters.Postgres.FlipperT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Flipper.Adapters.Postgres.FlipperT m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Flipper.Adapters.Postgres.FlipperT m) instance Control.Monad.IO.Class.MonadIO m => Control.Flipper.Types.HasFeatureFlags (Control.Flipper.Adapters.Postgres.FlipperT m) instance Control.Monad.IO.Class.MonadIO m => Control.Flipper.Types.ModifiesFeatureFlags (Control.Flipper.Adapters.Postgres.FlipperT m)