@@ -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 -> Bool
106+cacheIsMember (Store _ Nothing) _ = False
107+cacheIsMember (Store _ (Just lru)) key =
108+ let res = Lru.lookup key lru in
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,17 @@ get store identifier = do
151 return $ decode lbs
162 return $ decode lbs
165+--------------------------------------------------------------------------------
167+isMember :: Store -> [String] -> IO Bool
168+isMember store identifier
169+ | cacheIsMember store key = return True
170+ | otherwise = doesFileExist path
173+ key = hash identifier
174+ path = storeDirectory store </> key
154--------------------------------------------------------------------------------
176--------------------------------------------------------------------------------
155-- | Delete an item
177-- | Delete an item
156delete :: Store -> [String] -> IO ()
178delete :: Store -> [String] -> IO ()