Subject: [PATCH 3/8] gnu: Add ghc-hedis.

From: Stephen Paul Weber <[email-masked]>
Date: Sun, 26 Sep 2021 21:10:28 -0500

* gnu/packages/haskell-xyz.scm (ghc-hedis): New variable.
---
 gnu/packages/haskell-xyz.scm | 65 ++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index a7af298ada..55efd9da2b 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -15766,3 +15766,68 @@ using STM and with support for expiration times.")
     (description
       "Parser combinator library designed to be fast.  It doesn't support backtracking.")
     (license license:bsd-3)))
+
+(define-public ghc-hedis
+  (package
+    (name "ghc-hedis")
+    (version "0.12.11")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/hedis/hedis-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "1n83zwg011n9w2v1zz4mwpms9jh3c8mk700zya4as1jg83748xww"))))
+    (build-system haskell-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             ; The main tests require redis-server running, but not doctest
+             (when tests? (invoke "runhaskell" "Setup.hs" "test" "doctest"))
+             #t)))))
+    (inputs
+      `(("ghc-scanner" ,ghc-scanner)
+        ("ghc-async" ,ghc-async)
+        ("ghc-bytestring-lexing" ,ghc-bytestring-lexing)
+        ("ghc-unordered-containers" ,ghc-unordered-containers)
+        ("ghc-network" ,ghc-network)
+        ("ghc-resource-pool" ,ghc-resource-pool)
+        ("ghc-tls" ,ghc-tls)
+        ("ghc-vector" ,ghc-vector)
+        ("ghc-http" ,ghc-http)
+        ("ghc-errors" ,ghc-errors)
+        ("ghc-network-uri" ,ghc-network-uri)))
+    (native-inputs
+      `(("ghc-hunit" ,ghc-hunit)
+        ("ghc-test-framework" ,ghc-test-framework)
+        ("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
+        ("ghc-doctest" ,ghc-doctest)))
+    (home-page "https://github.com/informatikr/hedis")
+    (synopsis
+      "Client library for the Redis datastore: supports full command set, pipelining")
+    (description
+      "Redis is an open source, advanced key-value store.  It is often referred
+to as a data structure server since keys can contain strings, hashes, lists,
+sets and sorted sets.  This library is a Haskell client for the Redis datastore.
+Compared to other Haskell client libraries it has some advantages.
+
+Hedis is intended to be used with the latest stable version of Redis.
+Most redis commands are available as haskell functions, although MONITOR and SYNC
+are intentionally omitted.  Additionally, a low-level API is exposed that
+makes it easy for the library user to implement further commands, such as new
+commands from an experimental Redis version.
+
+Commands are pipelined as much as possible without any work by the user.
+
+When subscribed to the Redis PubSub server, clients are not allowed to issue
+commands other than subscribing to or unsubscribing from channels.
+This library uses the type system to enforce the correct behavior.
+
+TCP sockets are the default way to connect to a Redis server.  For connections
+to a server on the same machine, Unix domain sockets offer higher performance
+than the standard TCP connection.")
+    (license license:bsd-3)))
-- 
2.20.1