{-# LANGUAGE TemplateHaskell #-}
{- |
Module      : Web.RBB.Types.Blog
Description :  Internal Blog state
Copyright   :  (c) Sebastian Witte
License     :  BSD3

Maintainer  :  woozletoff@gmail.com
Stability   :  experimental

-}
module Web.RBB.Types.Blog
    where

import Control.Concurrent.STM    (TChan)
import Control.Lens
import Data.FileStore            (FileStore)
import Data.IxSet                (IxSet)
import Data.Map                  (Map)
import Data.Time                 (UTCTime)
import Web.RBB.Config
import Web.RBB.Types.CachedEntry
import Web.RBB.Types.Entry

data Blog m = Blog
    { _nextEntryId         :: Integer
    , _entries             :: IxSet Entry
    , _lastEntryUpdate     :: EntryUpdate
    , _lastUpdateCheck     :: UTCTime
    , _fileStore           :: FileStore
    , _blogEntryCache      :: Map Integer CachedEntry
    , _blogCacheChannel    :: TChan (Integer, CachedEntry)
    , _repositoryPath      :: FilePath
    , _contentRelativePath :: FilePath
    , _blogConfig          :: BlogConfig m
    }
makeLenses ''Blog