packages feed

egison-3.2.10: lib/core/database.egi

;;;
;;; Database.egi
;;;

(define $database-table
  (algebraic-data-matcher
    {<database-table string string>}))

(define $database-name
  (lambda [$data]
    (match data database-table
      {[<database-table $n _> n]})))

(define $table-name
  (lambda [$data]
    (match data database-table
      {[<database-table _ $n> n]})))

;;
;; Generate SQL
;;
(define $simple-select
  (lambda [$whats $table-name $wheres]
    {@"select " @(concat (insert-between whats ", ")) @" from " @table-name @" " @(simple-where wheres)}))

(define $simple-where
  (lambda [$wheres]
    (letrec {[$loop-fn (lambda [$wheres]
                               (match wheres (list [string something])
                                 {[<nil> ""]
                                  [<cons [$key $val] $rs>
                                   {{@key @" = " @val} @(loop-fn rs)}]}))]}
      (match (loop-fn wheres) (list string)
        {[<nil> ""]
         [<cons $wc $wcs> {@"where " @(concat (insert-between {wc @wcs} " and "))}]}))))