[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/emacsql 3dc6971829 190/427: Add ALTER TABLE stuff.
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/emacsql 3dc6971829 190/427: Add ALTER TABLE stuff. |
Date: |
Tue, 13 Dec 2022 02:59:40 -0500 (EST) |
branch: elpa/emacsql
commit 3dc697182987717fed84c3046c1b4f8155df135a
Author: Christopher Wellons <wellons@nullprogram.com>
Commit: Christopher Wellons <wellons@nullprogram.com>
Add ALTER TABLE stuff.
---
README.md | 16 ++++++++++++++++
emacsql-compiler.el | 15 +++++++++++++++
emacsql-tests.el | 9 +++++++++
3 files changed, 40 insertions(+)
diff --git a/README.md b/README.md
index 679da8f662..885aa8380c 100644
--- a/README.md
+++ b/README.md
@@ -326,6 +326,22 @@ Provides `COMMIT` and `ROLLBACK`.
[:rollback]
```
+#### :alter-table `<table>`, :rename-to `<table>`
+
+Provides `ALTER TABLE` and `RENAME TO`.
+
+```el
+[:alter-table prices :rename-to costs]
+```
+
+### :add-column `<column-spec>`
+
+Provides `ADD COLUMN`.
+
+```el
+[:alter-table tags :add-column (rating integer :non-nil)]
+```
+
#### :pragma `<expr>`
Provides `PRAGMA`.
diff --git a/emacsql-compiler.el b/emacsql-compiler.el
index ec572f81ab..db24fbb9f0 100644
--- a/emacsql-compiler.el
+++ b/emacsql-compiler.el
@@ -507,6 +507,21 @@ definitions for return from a `emacsql-defexpander'."
(emacsql-defexpander :rollback ()
(list "ROLLBACK"))
+(emacsql-defexpander :alter-table (table)
+ (emacsql-with-vars "ALTER TABLE "
+ (var table :identifier)))
+
+(emacsql-defexpander :add-column (column)
+ (emacsql-with-vars "ADD COLUMN "
+ (cl-typecase column
+ (symbol (var column :identifier))
+ (list (combine (emacsql--column-to-string column)))
+ (otherwise (emacsql-error "Only one column allowed here: %S" column)))))
+
+(emacsql-defexpander :rename-to (new-name)
+ (emacsql-with-vars "RENAME TO "
+ (var new-name :identifier)))
+
(emacsql-defexpander :vacuum ()
(list "VACUUM"))
diff --git a/emacsql-tests.el b/emacsql-tests.el
index d3dfbd00bb..2ae2ec5fea 100644
--- a/emacsql-tests.el
+++ b/emacsql-tests.el
@@ -191,6 +191,15 @@
([:commit] '()
"COMMIT;")))
+(ert-deftest emacsql-alter-table ()
+ (emacsql-tests-with-queries
+ ([:alter-table foo :rename-to bar] '()
+ "ALTER TABLE foo RENAME TO bar;")
+ ([:alter-table $1 :rename-to $2] '(alpha beta)
+ "ALTER TABLE alpha RENAME TO beta;")
+ ([:alter-table foo :add-column ($1 integer :non-nil)] '(size)
+ "ALTER TABLE foo ADD COLUMN size INTEGER NOT NULL;")))
+
(ert-deftest emacsql-system ()
"A short test that fully interacts with SQLite."
(should-not (emacsql-sqlite3-unavailable-p))
- [nongnu] elpa/emacsql a4d01edd71 411/427: Adjust emacsql-pg to new pg version from original author, (continued)
- [nongnu] elpa/emacsql a4d01edd71 411/427: Adjust emacsql-pg to new pg version from original author, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f179ba928a 047/427: Add :drop-table expander., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 458b8a6acd 074/427: Add :insert and :values expanders., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 2faed63b20 107/427: Prime emacsql-expand for substatements., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 13cfbeeaba 186/427: Tidy up the constructors., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql a742687cfb 192/427: Add funcall operator., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 8fa1ca451c 238/427: Fix schema mistake in unit test., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql ea613c5191 360/427: Push other sub-packages up to Emacs 25 as well, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql fbda94e6b5 339/427: Improve some doc-strings., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 6f1e375a2e 367/427: Better escaping of NUL and control characters (#42), ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 3dc6971829 190/427: Add ALTER TABLE stuff.,
ELPA Syncer <=
- [nongnu] elpa/emacsql ef976b8649 189/427: Add package target for Makefile., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 672963ae53 191/427: Add DISTINCT option to :select., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql b1da2ba9d2 297/427: Change compiler flag order (work around old gcc bug)., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql d21cc86540 188/427: Add lexical binding to tests., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 3d556608ef 394/427: emacsql-mysql: Abort if mysql cannot be found, ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 568e663032 193/427: Fold dashes into underscores in identifiers., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql c85ab1f7b4 194/427: Enable foreign keys in SQLite by default., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql f51bb4bfaf 195/427: Allow foreign key specifications within columns., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql c4abd187a3 196/427: Remove junk file., ELPA Syncer, 2022/12/13
- [nongnu] elpa/emacsql 3dfd0d4b8c 199/427: Fix missing argument typo., ELPA Syncer, 2022/12/13