clckwrks-0.13.0: Clckwrks/URL.hs
{-# LANGUAGE DeriveDataTypeable, TemplateHaskell, TypeFamilies #-}
module Clckwrks.URL
( ClckURL(..)
, AdminURL(..)
, AuthURL(..)
, ProfileURL(..)
, AuthProfileURL(..)
, ProfileDataURL(..)
) where
import Clckwrks.Admin.URL (AdminURL(..))
import Clckwrks.Page.Acid (PageId(..))
import Clckwrks.ProfileData.URL (ProfileDataURL(..))
import Clckwrks.Page.Types (Slug(..))
import Control.Applicative ((<$>))
import Data.Data (Data, Typeable)
import Data.SafeCopy (Migrate(..), SafeCopy(..), base, deriveSafeCopy, extension)
import Data.Text (Text)
import Happstack.Auth (AuthURL(..), ProfileURL(..), AuthProfileURL(..), UserId)
import Happstack.Auth.Core.AuthURL (OpenIdURL, AuthMode, OpenIdProvider)
import Web.Routes.TH (derivePathInfo)
data ClckURL_1
= ViewPage_1 PageId
| Blog_1
| AtomFeed_1
| ThemeData_1 FilePath
| PluginData_1 Text FilePath
| Admin_1 AdminURL
| Profile_1 ProfileDataURL
| Auth_1 AuthProfileURL
deriving (Eq, Ord, Data, Typeable, Read, Show)
$(deriveSafeCopy 1 'base ''ClckURL_1)
data ClckURL
= ViewPage PageId
| ViewPageSlug PageId Slug
| Blog
| AtomFeed
| ThemeData FilePath
| PluginData Text FilePath
| Admin AdminURL
| Profile ProfileDataURL
| Auth AuthProfileURL
deriving (Eq, Ord, Data, Typeable, Read, Show)
$(deriveSafeCopy 2 'extension ''ClckURL)
instance Migrate ClckURL where
type MigrateFrom ClckURL = ClckURL_1
migrate (ViewPage_1 pid) = ViewPage pid
migrate Blog_1 = Blog
migrate AtomFeed_1 = AtomFeed
migrate (ThemeData_1 fp) = ThemeData fp
migrate (PluginData_1 t f) = PluginData t f
migrate (Admin_1 u) = Admin u
migrate (Profile_1 pdu) = Profile pdu
migrate (Auth_1 apu) = Auth apu
-- TODO: move upstream
$(deriveSafeCopy 1 'base ''AuthURL)
$(deriveSafeCopy 1 'base ''ProfileURL)
$(deriveSafeCopy 1 'base ''AuthProfileURL)
$(deriveSafeCopy 1 'base ''OpenIdURL)
$(deriveSafeCopy 1 'base ''AuthMode)
$(deriveSafeCopy 1 'base ''OpenIdProvider)
$(derivePathInfo ''ClckURL)