Subject: [bug#50835] [PATCH v2 03/24] gnu: Add ghc-hedis.

From: Stephen Paul Weber <[email-masked]>
Date: Thu, 13 Jan 2022 21:45:25 -0500

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

diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 9670b50a65..bf1aa68305 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -16084,3 +16084,69 @@ using STM and with support for expiration times.")
       "Scanner is a 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.14.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/hedis/hedis-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "0h6s3x3pylyidjbzjqyrmc2cm5ls67m9iij35fn48rvq4l41w9h9"))))
+    (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")))))))
+    (inputs
+      (list
+        ghc-scanner
+        ghc-async
+        ghc-bytestring-lexing
+        ghc-unordered-containers
+        ghc-network
+        ghc-resource-pool
+        ghc-tls
+        ghc-vector
+        ghc-http
+        ghc-errors
+        ghc-network-uri))
+    (native-inputs
+      (list
+        ghc-hunit
+        ghc-test-framework
+        ghc-test-framework-hunit
+        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.30.2