| Safe Haskell | None |
|---|
Data.TCache.DefaultPersistence
- class Indexable a where
- class Serializable a where
- serialize :: a -> ByteString
- deserialize :: ByteString -> a
- setPersist :: a -> Persist
- defaultPersist :: Persist
- data Persist = Persist {}
Documentation
Indexable is an utility class used to derive instances of IResource
Example:
data Person= Person{ pname :: String, cars :: [DBRef Car]} deriving (Show, Read, Typeable)
data Car= Car{owner :: DBRef Person , cname:: String} deriving (Show, Read, Eq, Typeable)
Since Person and Car are instances of Read ans Show, by defining the Indexable instance
will implicitly define the IResource instance for file persistence:
instance Indexable Person where key Person{pname=n} = "Person " ++ n
instance Indexable Car where key Car{cname= n} = "Car " ++ n
Methods
Arguments
| :: a | |
| -> String | additional extension for default file paths. IMPORTANT: defPath must depend on the datatype, not the value (must be constant). Default is .tcachedata/ |
class Serializable a whereSource
Serialize is an alternative to the IResource class for defining persistence in TCache. The deserialization must be as lazy as possible. serialization/deserialization are not performance critical in TCache
Read, Show, instances are implicit instances of Serializable
serialize = show
deserialize= read
Since write and read to disk of to/from the cache are not be very frequent The performance of serialization is not critical.
Methods
serialize :: a -> ByteStringSource
deserialize :: ByteString -> aSource
Arguments
| :: a | |
| -> Persist |
|
defaultPersist :: PersistSource
Implements default persistence of objects in files with their keys as filenames
a persist mechanism has to implement these three primitives
defaultpersist is the default file persistence