(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))))
-
-(defun column-name-from-arg (arg)
- (cond ((symbolp arg)
- arg)
- ((typep arg 'sql-ident)
- (slot-value arg 'name))
- ((stringp arg)
- (intern (symbol-name-default-case arg)))))
-
+ (sql-escape arg))))
(defun remove-keyword-arg (arglist akey)
(let ((mylist arglist)
(pop-arg mylist))
newlist))
+(defun set-view-table-slot (class base-table)
+ (setf (view-table class)
+ (table-name-from-arg (or (and base-table
+ (if (listp base-table)
+ (car base-table)
+ base-table))
+ (class-name class)))))
+
(defmethod initialize-instance :around ((class standard-db-class)
&rest all-keys
&key direct-superclasses base-table
direct-superclasses)
(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)))))
+ (set-view-table-slot class base-table)
(register-metaclass class (nth (1+ (position :direct-slots all-keys))
all-keys))))
&allow-other-keys)
(let ((root-class (find-class 'standard-db-object nil))
(vmc 'standard-db-class))
- (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)))))
+ (set-view-table-slot class base-table)
(setf (view-class-qualifier class)
(car qualifier))
(if (and root-class (not (equal class root-class)))
;; the column slot is filled in with the slot-name, but transformed
;; to be sql safe, - to _ and such.
(setf (slot-value esd 'column)
- (column-name-from-arg
- (if (slot-boundp dsd 'column)
- (delistify-dsd (view-class-slot-column dsd))
- (column-name-from-arg
- (sql-escape (slot-definition-name dsd))))))
-
+ (if (slot-boundp dsd 'column)
+ (delistify-dsd (view-class-slot-column dsd))
+ (slot-definition-name dsd)))
(setf (slot-value esd 'db-type)
(when (slot-boundp dsd 'db-type)
(delistify-dsd
type-predicate)))
(setf (slot-value esd 'column)
- (column-name-from-arg
- (sql-escape (slot-definition-name dsd))))
+ (slot-definition-name dsd))
(setf (slot-value esd 'db-info) nil)
(setf (slot-value esd 'db-kind) :virtual)