emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/srht 0704d02564 2/5: srht-gql: srht-gql-mutation: Fix.


From: ELPA Syncer
Subject: [elpa] externals/srht 0704d02564 2/5: srht-gql: srht-gql-mutation: Fix.
Date: Wed, 15 Nov 2023 18:58:35 -0500 (EST)

branch: externals/srht
commit 0704d02564f65166b0f6a434ec5b60077fd91d29
Author: Aleksandr Vityazev <avityazev@posteo.org>
Commit: Aleksandr Vityazev <avityazev@posteo.org>

    srht-gql: srht-gql-mutation: Fix.
---
 lisp/srht-gql.el | 36 +++++++++++++++++++++++++++---------
 1 file changed, 27 insertions(+), 9 deletions(-)

diff --git a/lisp/srht-gql.el b/lisp/srht-gql.el
index 366758d766..404ddd8c72 100644
--- a/lisp/srht-gql.el
+++ b/lisp/srht-gql.el
@@ -28,6 +28,19 @@
 (declare-function json-encode "json" (object))
 (declare-function map-apply "map")
 
+(defsubst srht-gql--kw->str (kw)
+  (substring (symbol-name kw) 1))
+
+(defun srht-gql--serialize-plist (f plist)
+  (format
+   "{%s}"
+   (mapconcat
+    (lambda (el)
+      (pcase el
+        ((pred keywordp) (concat (srht-gql--kw->str el) ": "))
+        (_ (funcall f el))))
+    plist " ")))
+
 (defun srht-gql--string (val)
   (pcase val
     ((pred symbolp)
@@ -35,15 +48,19 @@
     ((pred integerp)
      (number-to-string val))
     ((pred stringp)
-     (json-encode val))))
+     (json-encode val))
+    ((pred plistp)
+     (srht-gql--serialize-plist #'srht-gql--string val))))
 
 (defun srht-gql--string-join (plist)
-  (let ((lst (map-apply (lambda (kw val)
-                          (if val
-                              (concat (substring (symbol-name kw) 1) ": "
-                                      (srht-gql--string val))
-                            ""))
-                        plist)))
+  (let ((lst (remove
+              ""
+              (map-apply (lambda (kw val)
+                           (if val
+                               (concat (srht-gql--kw->str kw) ": "
+                                       (srht-gql--string val))
+                             ""))
+                         plist))))
     (mapconcat #'identity lst ", ")))
 
 (defun srht-gql--serialize-args (args)
@@ -52,7 +69,7 @@
     (format "(%s)" (srht-gql--string-join args))))
 
 (defun srht-gql--serialize-fields (lst)
-  "Serialize all type fields from the LST."
+  "Serialize fields from the LST."
   (let* ((type (plist-get lst :type))
          (args (plist-get lst :arguments))
          (fields (if type (plist-get lst :fields) lst)))
@@ -78,7 +95,8 @@
   (json-encode `(("query" . ,(srht-gql-serialize base-query)))))
 
 (defun srht-gql-mutation (base-query)
-  (json-encode `(("mutation" . ,(srht-gql-serialize base-query)))))
+  (json-encode
+   `(("query" . ,(concat "mutation" (srht-gql-serialize base-query))))))
 
 (provide 'srht-gql)
 ;;; srht-gql.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]