14 Sep 2007 Kevin Rosenberg <kevin@rosenberg.net>
[clsql.git] / sql / metaclasses.lisp
index d1fba154368fdf54e9d389a77fd753f395dd4f79..bed60eeea4825fca492dbd2ebc62cf0943dc07a3 100644 (file)
 
 (defun table-name-from-arg (arg)
   (cond ((symbolp arg)
-         arg)
+         (intern (sql-escape arg)))
         ((typep arg 'sql-ident)
-         (slot-value arg 'name))
+         (if (symbolp (slot-value arg 'name))
+             (intern (sql-escape (slot-value arg 'name)))
+             (sql-escape (slot-value arg 'name))))
         ((stringp arg)
-         (intern arg))))
+         (sql-escape arg))))
 
 (defun column-name-from-arg (arg)
   (cond ((symbolp arg)
                    (remove-keyword-arg all-keys :direct-superclasses)))
         (call-next-method))
     (setf (view-table class)
-          (table-name-from-arg (sql-escape (or (and base-table
-                                                    (if (listp base-table)
-                                                        (car base-table)
-                                                        base-table))
-                                               (class-name class)))))
+          (table-name-from-arg (or (and base-table
+                                        (if (listp base-table)
+                                            (car base-table)
+                                            base-table))
+                                   (class-name class))))
     (register-metaclass class (nth (1+ (position :direct-slots all-keys))
                                    all-keys))))