@@ -9,6 +9,7 @@ module Hakyll.Core.Store
@@ -100,6 +101,16 @@ cacheLookup (Store _ (Just lru)) key = do
100 Nothing -> WrongType (typeOf (undefined :: a)) (typeOf x)
101 Nothing -> WrongType (typeOf (undefined :: a)) (typeOf x)
104+--------------------------------------------------------------------------------
105+cacheIsMember :: Store -> String -> IO Bool
106+cacheIsMember (Store _ Nothing) _ = return False
107+cacheIsMember (Store _ (Just lru)) key = do
108+ res <- Lru.lookup key lru
110+ Nothing -> return False
103--------------------------------------------------------------------------------
114--------------------------------------------------------------------------------
104-- | Auxiliary: delete an item from the in-memory cache
115-- | Auxiliary: delete an item from the in-memory cache
105cacheDelete :: Store -> String -> IO ()
116cacheDelete :: Store -> String -> IO ()
@@ -151,6 +162,16 @@ get store identifier = do
151 return $ decode lbs
162 return $ decode lbs
165+--------------------------------------------------------------------------------
167+isMember :: Store -> [String] -> IO Bool
168+isMember store identifier = do
169+ inCache <- cacheIsMember store key
170+ if inCache then return True else doesFileExist path
172+ key = hash identifier
173+ path = storeDirectory store </> key
154--------------------------------------------------------------------------------
175--------------------------------------------------------------------------------
155-- | Delete an item
176-- | Delete an item
156delete :: Store -> [String] -> IO ()
177delete :: Store -> [String] -> IO ()