From 274c4cc42c5451fd073f577bf1592aed091dacf7 Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Mon, 27 Mar 2023 22:48:57 +0300 Subject: Allow running raw queries in field form Signed-off-by: Munyoki Kilyungi --- dump.scm | 7 ++++++- dump/sql.scm | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/dump.scm b/dump.scm index 112086b..b05af85 100755 --- a/dump.scm +++ b/dump.scm @@ -134,6 +134,7 @@ association list mapping substrings to their replacements." #`(key #,(symbol->string (syntax->datum ((syntax-rules (field) + ((field (query alias)) alias) ((field table column) column) ((field table column alias) alias) ((field table column operation alias) alias)) @@ -149,6 +150,7 @@ ALIST field-name) forms." #,(symbol->string (syntax->datum ((syntax-rules (field) + ((field (query alias)) alias) ((field table column) column) ((field table column alias) alias) ((field table column operation alias) alias)) @@ -311,7 +313,10 @@ must be remedied." ((table-name column-name _ ...) (datum->syntax x (column-id (symbol->string table-name) - (symbol->string column-name)))))) + (symbol->string column-name)))) + (((query alias)) + (datum->syntax + x (column-id query (symbol->string alias)))))) (collect-fields predicate-clause)))) #,(dump-id dump-table (syntax->datum #'predicate))) ;; Automatically create domain triples diff --git a/dump/sql.scm b/dump/sql.scm index 54371a2..76c9e0e 100644 --- a/dump/sql.scm +++ b/dump/sql.scm @@ -29,12 +29,12 @@ (_ "")) #,(string-join (filter-map (match-lambda ('distinct #f) + (((query alias)) + (format #f "~a AS ~a" query alias)) ((table column) (format #f "~a.~a" table column)) ((table column alias) (format #f "~a.~a AS ~a" table column alias)) - ((table column operation alias) - (format #f "~a(~a.~a) AS ~a" operation table column alias)) (field-spec (error "Invalid field specification" field-spec))) (syntax->datum #'fields)) -- cgit v1.2.3