packages feed

TCache-0.9.0.1: demos/IndexQuery.hs

{-# LANGUAGE DeriveDataTypeable #-}
module Main where
import Data.TCache
import Data.TCache.IndexQuery
import Data.TCache.FilePersistence
import Debug.Trace

import Data.Typeable


data Person= Person {pname :: String} deriving  (Show, Read, Eq, Typeable)

data Car= Car{owner :: DBRef Person , cname:: String} deriving (Show, Read, Eq, Typeable)

instance Indexable Person where key Person{pname= n} = "Person " ++ n
instance Indexable Car where key Car{cname= n} = "Car " ++ n


main =  do

   index owner
   index pname
   index cname

   bruce <- atomically $    newDBRef $ Person "bruce"
   atomically $  mapM_ newDBRef [Car bruce "Bat Mobile", Car bruce "Porsche"]

   r <- atomically $ cname .>=. "Bat Mobile"
   print r

   r <- atomically $ select (cname, owner) $  (owner .==. bruce)  .&&. (cname .>=. "Bat Mobile")
   print r


   --syncCache