]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Add missing TSN.XmlImport module.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 11 Jan 2014 07:07:35 +0000 (02:07 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 11 Jan 2014 07:07:35 +0000 (02:07 -0500)
src/TSN/XmlImport.hs [new file with mode: 0644]

diff --git a/src/TSN/XmlImport.hs b/src/TSN/XmlImport.hs
new file mode 100644 (file)
index 0000000..3791ab5
--- /dev/null
@@ -0,0 +1,28 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE GADTs #-}
+
+module TSN.XmlImport (
+  XmlImport(..) )
+where
+
+import Database.Groundhog (
+  AutoKey,
+  insert,
+  insertByAll )
+import Database.Groundhog.Core ( PersistBackend, PersistEntity )
+
+import Xml ( FromXml(..) )
+
+
+class (FromXml a, PersistEntity (Db a)) => XmlImport a where
+  -- | This is similar to the signature for Groundhog's 'insert'
+  --   function, except the 'AutoKey' we return is for our 'Db'
+  --   counterpart.
+  insert_xml :: (PersistBackend m) => a ->  m (AutoKey (Db a))
+  insert_xml x = insert (from_xml x)
+
+  -- | Same rationale as 'insert_xml', except it uses 'insertByAll'.
+  insertByAll_xml :: (PersistBackend m)
+                  => a
+                  -> m ( Either (AutoKey (Db a)) (AutoKey (Db a)) )
+  insertByAll_xml x = insertByAll (from_xml x)