[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/emacsql 58e31aa3a9 079/427: Add :update and :set expanders
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/emacsql 58e31aa3a9 079/427: Add :update and :set expanders. |
Date: |
Tue, 13 Dec 2022 02:59:30 -0500 (EST) |
branch: elpa/emacsql
commit 58e31aa3a9f888e197f086060ce5c6cabcd168e6
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>
Add :update and :set expanders.
---
README.md | 17 +++++++++++++++++
emacsql-tests.el | 4 +++-
emacsql.el | 10 ++++++++++
3 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6e95635e4c..d40356bc83 100644
--- a/README.md
+++ b/README.md
@@ -168,6 +168,23 @@ Provides `INSERT`.
[:insert :into employees :values (["Jeff" 0] ["Susan" 0])]
```
+#### :update `<table>`
+
+Provides `UPDATE`.
+
+```el
+[:update people :set ...]
+```
+
+#### :set `<assignment>|[<assignment> ...]`
+
+Provides `SET`.
+
+```el
+[:update people :set (= name "Richy") :where ...]
+[:update people :set [(= name "Ricky") (= salary 300000)] :where ...]
+```
+
### Templates
To make statement compilation faster, and to avoid making you build up
diff --git a/emacsql-tests.el b/emacsql-tests.el
index 42adb83255..41ebd4eb74 100644
--- a/emacsql-tests.el
+++ b/emacsql-tests.el
@@ -63,7 +63,9 @@
(emacsql-tests-query [:create-table foo [a b c]] ()
"CREATE TABLE foo (a, b, c);")
(emacsql-tests-query [:drop-table $1] '(foo)
- "DROP TABLE foo;"))
+ "DROP TABLE foo;")
+ (emacsql-tests-query [:update people :set (= id $1)] '(10)
+ "UPDATE people SET id = 10;"))
(provide 'emacsql-tests)
diff --git a/emacsql.el b/emacsql.el
index cd75907f7b..c378d65cf3 100644
--- a/emacsql.el
+++ b/emacsql.el
@@ -472,6 +472,16 @@ definitions for return from a `emacsql-defexpander'."
(emacsql-with-vars "VALUES "
(var values :vector)))
+(emacsql-defexpander :update (table)
+ (emacsql-with-vars "UPDATE "
+ (var table :identifier)))
+
+(emacsql-defexpander :set (set)
+ (emacsql-with-vars "SET "
+ (cl-etypecase set
+ (vector (mapconcat (lambda (s) (combine (emacsql--expr s))) set ", "))
+ (list (combine (emacsql--expr set))))))
+
(provide 'emacsql)
;;; emacsql.el ends here
- [nongnu] elpa/emacsql 682c1816fb 111/427: Add optional font-locking., (continued)
- [nongnu] elpa/emacsql 682c1816fb 111/427: Add optional font-locking., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 3eb06cdd73 114/427: Add GROUP BY expander., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql e08094c78f 058/427: More precise parsing., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql b9599f1f41 066/427: Spelling error., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f410b5d663 068/427: Fix spelling error., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql b3110c9fa9 018/427: Rename .sqlite to .db., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 031ec59f18 048/427: Add combine function to with-vars macro., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f9820deed7 056/427: Add unary operators., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f9c562b0a4 069/427: Add SQLite link., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 43ecb5a252 071/427: Tweak README names., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 58e31aa3a9 079/427: Add :update and :set expanders.,
ELPA Syncer <=
- [nongnu] elpa/emacsql c9aab20d47 082/427: Add in operator (special case operator)., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 25f9817064 094/427: Add work-in-progress note back., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 03295cba37 119/427: Add ORDER BY expanders., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql d1c0904564 120/427: Fix missing quotes., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 4718ff4e89 122/427: Simplify all the expanders with new local functions., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 54247e4b5e 127/427: Add another insertion unit test., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql aa9283ca0a 132/427: Allow sub-selects with :from., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql c236aa8437 144/427: Remove extra space., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 75ea77c9a0 149/427: Add an "as" operator, greatly simplifying :from., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 213bb71b7a 152/427: Add :having expander., ELPA Syncer, 2022/12/13