{-# LANGUAGE DeriveDataTypeable, TemplateHaskell, TypeFamilies #-}
module Clckwrks.Page.URL where

import Data.Data (Data, Typeable)
import Data.SafeCopy               (SafeCopy(..), base, deriveSafeCopy)
import Clckwrks.Page.Acid          (PageId(..))
import Clckwrks.Page.Types         (Slug(..))
import Web.Routes.TH               (derivePathInfo)

data PageAdminURL
    = EditPage PageId
    | PreviewPage PageId
    | Pages
    | NewPage
    | NewPost
    | EditFeedConfig
      deriving (Eq, Ord, Data, Typeable, Read, Show)
$(deriveSafeCopy 0 'base ''PageAdminURL)
$(derivePathInfo ''PageAdminURL)

data PageURL
    = ViewPage PageId
    | ViewPageSlug PageId Slug
    | Blog
    | AtomFeed
    | PageAdmin PageAdminURL
      deriving (Eq, Ord, Data, Typeable, Read, Show)
$(deriveSafeCopy 0 'base ''PageURL)
$(derivePathInfo ''PageURL)