summaryrefslogtreecommitdiff
path: root/BackendClass.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-03-15 22:04:50 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-03-15 22:04:50 -0400
commit4594bd51c1754bc7e1fdf03d83569aeea163e761 (patch)
treec8af87eac86a875d377dce04aa6933218ba817a1 /BackendClass.hs
parentf27df5e6584ed6a09be4a9bb1030be132c2d8051 (diff)
rename file
Diffstat (limited to 'BackendClass.hs')
-rw-r--r--BackendClass.hs39
1 files changed, 39 insertions, 0 deletions
diff --git a/BackendClass.hs b/BackendClass.hs
new file mode 100644
index 000000000..909ae8f96
--- /dev/null
+++ b/BackendClass.hs
@@ -0,0 +1,39 @@
+{- git-annex key/value backend data type
+ -
+ - Most things should not need this, using Types instead
+ -
+ - Copyright 2010 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module BackendClass where
+
+import Key
+
+data Backend a = Backend {
+ -- name of this backend
+ name :: String,
+ -- converts a filename to a key
+ getKey :: FilePath -> a (Maybe Key),
+ -- stores a file's contents to a key
+ storeFileKey :: FilePath -> Key -> a Bool,
+ -- retrieves a key's contents to a file
+ retrieveKeyFile :: Key -> FilePath -> a Bool,
+ -- removes a key, optionally checking that enough copies are stored
+ -- elsewhere
+ removeKey :: Key -> Maybe Int -> a Bool,
+ -- checks if a backend is storing the content of a key
+ hasKey :: Key -> a Bool,
+ -- called during fsck to check a key
+ -- (second parameter may be the filename associated with it)
+ -- (third parameter may be the number of copies that there should
+ -- be of the key)
+ fsckKey :: Key -> Maybe FilePath -> Maybe Int -> a Bool
+}
+
+instance Show (Backend a) where
+ show backend = "Backend { name =\"" ++ name backend ++ "\" }"
+
+instance Eq (Backend a) where
+ a == b = name a == name b