r4750: Auto commit for Debian build
[umlisp.git] / sql-classes.lisp
index f1079904ed113cfb2e775c2208fac7946b46b138..1fe072343fea69a3bd5ff641876acde8c494ccc5 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Author:        Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: sql-classes.lisp,v 1.22 2003/05/03 18:09:50 kevin Exp $
+;;;; $Id: sql-classes.lisp,v 1.24 2003/05/03 19:32:00 kevin Exp $
 ;;;;
 ;;;; This file, part of UMLisp, is
 ;;;;    Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D.
@@ -58,32 +58,28 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS"
   
 (defun query-string (table fields &optional srl where-name where-value
                     &key (lrlname "KCUILRL") single distinct order like)
-  (let ((qs (format nil "select ~A~{~:@(~A~)~^,~} from ~:@(~A~)" 
-                   (if distinct "distinct " "")
-                   fields table)))
-    (when where-name
-      (setq qs (concatenate 'string qs
-                           (format nil
-                                   (if (stringp where-value)
-                                       (if like
-                                           " where ~A like '%~A%'"
-                                         " where ~A='~A'")
-                                     " where ~A=~A")
-                                   where-name  where-value))))
-    (when srl
-      (setq qs (concatenate 'string qs (format nil " and ~:@(~A~) <= ~D"
-                                              lrlname srl))))
-    (when order
-      (setq qs (concatenate 'string qs
-                           (format nil " order by ~{~:@(~A~) ~(~A~)~^,~}"
-                                   (flatten
-                                    (loop for o in order collect
-                                          (if (atom o)
-                                              (list o  'asc)
-                                              (list (car o) (cdr o)))))))))
-    (when single
-      (setq qs (concatenate 'string qs " limit 1")))
-    qs))
+  (concatenate
+   'string
+   (format nil "select ~A~{~:@(~A~)~^,~} from ~:@(~A~)" 
+          (if distinct "distinct " "") fields table)
+   (if where-name
+       (format nil
+              (if (stringp where-value)
+                  (if like
+                      " where ~A like '%~A%'"
+                      " where ~A='~A'")
+                  " where ~A=~A")
+              where-name  where-value)
+       "")
+   (if srl (format nil " and ~:@(~A~) <= ~D" lrlname srl) "")
+   (if order
+       (format nil " order by ~{~:@(~A~) ~(~A~)~^,~}"
+              (flatten (loop for o in order collect
+                             (if (atom o)
+                                 (list o  'asc)
+                                 (list (car o) (cdr o))))))
+       "")
+   (if single " limit 1" "")))
 
 (defun find-ucon-cui (cui &key (srl *current-srl*))
   "Find ucon for a cui"
@@ -101,8 +97,9 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS"
        (string-append ls (format nil " and KCUILRL <= ~d" srl)))
       (string-append ls " limit 1")
       (awhen (car (mutex-sql-query ls))
-            (make-instance 'ucon :cui cui :pfstr (car it)
-                           :lrl (ensure-integer (cadr it)))))))
+            (destructuring-bind (kpfstr kcuilrl)
+                (make-instance 'ucon :cui cui :pfstr kpfstr
+                           :lrl (ensure-integer kcuilrl)))))))
 
 (defun find-ucon-cui-sans-pfstr (cui &key (srl *current-srl*))
   "Find ucon for a cui"