content: {-# LANGUAGE Unsafe #-}
  
  {- |
  
  This module exports the trusted types and functions used by
  "Hails.Database.Query" when performing database queries.
  
  -}
  
  module Hails.Database.Query.TCB ( 
    -- * Labeled cursor
      Cursor(..)
    ) where
  
  import           LIO.DCLabel
  import           Hails.Data.Hson
  import           Hails.Database.TCB
  import qualified Database.MongoDB as Mongo
  
  -- | A labeled cursor. The cursor is labeled with the join of the
  -- database and collection it reads from. The collection policies
  -- are \"carried\" along since they are applied on-demand.
  data Cursor = CursorTCB { curLabel     :: DCLabel
                          -- ^ Cursor label
                          , curInternal  :: Mongo.Cursor
                          -- ^ Internal MongoDB cursor
                          , curProject   :: [FieldName]
                          -- ^ Projector from query. Used to remove
                          -- fields after performing query.
                          , curCollection:: Collection
                          -- ^ Collection cursor is reading from
                          } 
  