module Data.Hoodle.Select where
import Control.Applicative
import Control.Lens
import Data.ByteString
import qualified Data.Text as T
import Data.Hoodle.Generic
import Data.Hoodle.Simple
data GSelect a b = GSelect { gselect_id :: ByteString
, gselect_ttl :: ByteString
, gselect_revisions :: [Revision]
, gselect_embeddedpdf :: Maybe PDFData
, gselect_embeddedtext :: Maybe T.Text
, gselect_all :: a
, gselect_selected :: b
}
gselHoodleID :: Simple Lens (GSelect a b) ByteString
gselHoodleID = lens gselect_id (\f a -> f { gselect_id = a } )
gselTitle :: Simple Lens (GSelect a b) ByteString
gselTitle = lens gselect_ttl (\f a -> f {gselect_ttl = a})
gselRevisions :: Simple Lens (GSelect a b) [Revision]
gselRevisions = lens gselect_revisions (\f a -> f {gselect_revisions = a } )
gselEmbeddedPdf :: Simple Lens (GSelect a b) (Maybe PDFData)
gselEmbeddedPdf = lens gselect_embeddedpdf (\f a -> f {gselect_embeddedpdf = a})
gselEmbeddedText :: Simple Lens (GSelect a b) (Maybe T.Text)
gselEmbeddedText = lens gselect_embeddedtext (\f a -> f {gselect_embeddedtext = a})
gselAll :: Simple Lens (GSelect a b) a
gselAll = lens gselect_all (\f a -> f {gselect_all = a} )
gselSelected :: Simple Lens (GSelect a b) b
gselSelected = lens gselect_selected (\f a -> f {gselect_selected = a})
gSelect2GHoodle :: GSelect (m a) b -> GHoodle m a
gSelect2GHoodle = GHoodle <$> view gselHoodleID
<*> view gselTitle
<*> view gselRevisions
<*> view gselEmbeddedPdf
<*> view gselEmbeddedText
<*> view gselAll
gHoodle2GSelect :: GHoodle m a -> GSelect (m a) (Maybe b)
gHoodle2GSelect = GSelect <$> view ghoodleID
<*> view gtitle
<*> view grevisions
<*> view gembeddedpdf
<*> view gembeddedtext
<*> view gpages
<*> pure Nothing