[Fencommits] fenserve: I can get and put data!
Benja Fallenstein
benja.fallenstein at gmail.com
Thu Apr 5 18:57:49 EEST 2007
Thu Apr 5 18:57:27 EEST 2007 Benja Fallenstein <benja.fallenstein at gmail.com>
* I can get and put data!
diff -rN -u old-fenserve/FenServe.hs new-fenserve/FenServe.hs
--- old-fenserve/FenServe.hs 2007-04-05 18:57:49.000000000 +0300
+++ new-fenserve/FenServe.hs 2007-04-05 18:57:49.000000000 +0300
@@ -145,8 +145,10 @@
data File = File Node
-instance FromRDF File where fromRDF = error "FenServe: XXX"
-instance ToRDF File where toRDF = error "FenServe: XXX"
+instance FromRDF File where
+ fromRDF g n = fmap File $ fromRDFConn fs_representation fromRDF g n
+instance ToRDF File where
+ toRDF (File n) = toResourceRDF fs_File [addRDFConn fs_representation toRDF n]
resolveFile rs (File n) put' [] = return $ Resource {
getResource = getData n,
@@ -169,8 +171,12 @@
(toRDFPair fs_filename toRDF fs_spec toRDF) (Map.toList m)
]
-resolveDir rs (Dir m) put' (p:ps) =
- resolve' rs (m Map.! p) (\n -> put' $ Dir $ Map.insert p n m) ps
+resolveDir rs (Dir m) put' (p:ps) = case Map.lookup p m of
+ Just n -> resolve' rs n (\n' -> put' $ Dir $ Map.insert p n' m) ps
+ Nothing -> do emptyBlock <- liftM bIRI $ addBlock ByteString.empty
+ resolveFile rs (File emptyBlock)
+ (\f' -> do n' <- addData f'
+ put' $ Dir $ Map.insert p n' m) ps
resolveDir rs dir put' [] = resolveDir rs dir put' [""]
More information about the Fencommits
mailing list