aboutsummaryrefslogtreecommitdiff
path: root/Types/Backend.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-06-01 21:56:04 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-06-01 21:56:04 -0400
commit703c437bd9c6cb9e4675b65ac2b107f76b135d71 (patch)
treea6f35036bdd2b33aca50fd899448a0f6e3b60507 /Types/Backend.hs
parent971ab27e7820a3228f71dd42f3e870c0fc2f4345 (diff)
rename modules for data types into Types/ directory
Diffstat (limited to 'Types/Backend.hs')
-rw-r--r--Types/Backend.hs41
1 files changed, 41 insertions, 0 deletions
diff --git a/Types/Backend.hs b/Types/Backend.hs
new file mode 100644
index 000000000..8100eaf28
--- /dev/null
+++ b/Types/Backend.hs
@@ -0,0 +1,41 @@
+{- 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 Types.Backend where
+
+import Types.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,
+ -- Is a newer repesentation possible for a key?
+ upgradableKey :: Key -> a Bool
+}
+
+instance Show (Backend a) where
+ show backend = "Backend { name =\"" ++ name backend ++ "\" }"
+
+instance Eq (Backend a) where
+ a == b = name a == name b