r9256: proper name for file
[clsql.git] / base / loop-extension.lisp
index 526bafd863c6684af279afa42f9294b052b7c7eb..d0f816f37da0192eadea3cdb3c5f2c35a68918a1 100644 (file)
@@ -2,7 +2,7 @@
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name: loop-extension.lisp
+;;;; Name:    loop-extension.lisp
 ;;;; Purpose: Extensions to the Loop macro for CLSQL
 ;;;;
 ;;;; Copyright (c) 2001-2004 Kevin Rosenberg and (c) 1999-2001 Pierre R. Mai
     (unless in-phrase
       (ansi-loop::loop-error "Missing OF or IN iteration path."))
     (unless from-phrase
-      (setq from-phrase '(clsql-base:*default-database*)))
+      (setq from-phrase '(clsql:*default-database*)))
 
     (unless (consp variable)
       (setq variable (list variable)))
 
     (cond
-      ;; Object query resulting in a list of returned object instances
-      ((and (consp (first in-phrase))
-           (string-equal "select" (symbol-name (caar in-phrase)))
-           (eq 'quote (first (second (first in-phrase))))
-           (symbolp (second (second (first in-phrase)))))
+     ;; object query
+     ((and (consp (first in-phrase))
+          (string-equal "sql-query" (symbol-name (caar in-phrase)))
+          (consp (second (first in-phrase)))
+          (eq 'quote (first (second (first in-phrase))))
+          (symbolp (second (second (first in-phrase)))))
 
        (let ((result-var (ansi-loop::loop-gentemp
                              'loop-record-result-))
             (step-var (ansi-loop::loop-gentemp 'loop-record-step-)))
         `(((,variable nil ,@(and data-type (list data-type)))
-           (,result-var ,(first in-phrase))
+           (,result-var (clsql:query ,(first in-phrase)))
            (,step-var nil))
           ()
           ()
@@ -93,7 +94,7 @@
                              'loop-record-result-set-))
             (step-var (ansi-loop::loop-gentemp 'loop-record-step-)))
         (push `(when ,result-set-var
-                 (clsql-base:database-dump-result-set ,result-set-var ,db-var))
+                 (clsql:database-dump-result-set ,result-set-var ,db-var))
               ansi-loop::*loop-epilogue*)
         `(((,variable nil ,@(and data-type (list data-type)))
            (,query-var ,(first in-phrase))
            (,result-set-var nil)
            (,step-var nil))
           ((multiple-value-bind (%rs %cols)
-               (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto)
+               (clsql:database-query-result-set ,query-var ,db-var :result-types :auto)
              (setq ,result-set-var %rs ,step-var (make-list %cols))))
           ()
           ()
-          (not (clsql-base:database-store-next-row ,result-set-var ,db-var ,step-var))
+          (not (clsql:database-store-next-row ,result-set-var ,db-var ,step-var))
           (,variable ,step-var)
           (not ,result-set-var)
           ()
-          (not (clsql-base:database-store-next-row ,result-set-var ,db-var ,step-var))
+          (not (clsql:database-store-next-row ,result-set-var ,db-var ,step-var))
           (,variable ,step-var)))))))
 
 #+(or cmu scl sbcl openmcl allegro)
     (unless in-phrase
       (error "Missing OF or IN iteration path."))
     (unless from-phrase
-      (setq from-phrase '(clsql-base:*default-database*)))
+      (setq from-phrase '(clsql:*default-database*)))
 
     (unless (consp iter-var)
       (setq iter-var (list iter-var)))
 
     (cond
-      ;; Object query resulting in a list of returned object instances
-      ((and (string-equal "select" (symbol-name (car in-phrase)))
-           (eq 'quote (first (second in-phrase)))
-           (symbolp (second (second in-phrase))))
+     ;; object query
+     ((and (consp in-phrase)
+          (string-equal "sql-query" (symbol-name (car in-phrase)))
+          (consp (second in-phrase))
+          (eq 'quote (first (second in-phrase)))
+          (symbolp (second (second in-phrase))))
 
        (let ((result-var (gensym "LOOP-RECORD-RESULT-"))
             (step-var (gensym "LOOP-RECORD-STEP-")))
          t
          nil
          `(,@(mapcar (lambda (v) `(,v nil)) iter-var)
-           (,result-var ,in-phrase)
-           (,step-var nil))
+             (,result-var (clsql:query ,in-phrase))
+             (,step-var nil))
          ()
          ()
          ()
            (,result-set-var nil)
            (,step-var nil))
          `((multiple-value-bind (%rs %cols)
-               (clsql-base:database-query-result-set ,query-var ,db-var :result-types :auto)
+               (clsql:database-query-result-set ,query-var ,db-var :result-types :auto)
              (setq ,result-set-var %rs ,step-var (make-list %cols))))
          ()
          ()
-         `((unless (clsql-base:database-store-next-row ,result-set-var ,db-var ,step-var)
+         `((unless (clsql:database-store-next-row ,result-set-var ,db-var ,step-var)
              (when ,result-set-var
-               (clsql-base:database-dump-result-set ,result-set-var ,db-var))
+               (clsql:database-dump-result-set ,result-set-var ,db-var))
              t))
          `(,iter-var ,step-var)
-         `((unless (clsql-base:database-store-next-row ,result-set-var ,db-var ,step-var)
+         `((unless (clsql:database-store-next-row ,result-set-var ,db-var ,step-var)
              (when ,result-set-var
-               (clsql-base:database-dump-result-set ,result-set-var ,db-var))
+               (clsql:database-dump-result-set ,result-set-var ,db-var))
              t))
          `(,iter-var ,step-var)
          ()