X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Fmetaclasses.lisp;h=5af1a64f03719f4abea7e82e1d9ab90e9fd6ceb8;hb=f3430ff34ef6631daf20cb9c69ecbc7ad84d14df;hp=bed60eeea4825fca492dbd2ebc62cf0943dc07a3;hpb=5ed1f05543cbd24b3f2bb735f2cfc03ea85e51ec;p=clsql.git diff --git a/sql/metaclasses.lisp b/sql/metaclasses.lisp index bed60ee..5af1a64 100644 --- a/sql/metaclasses.lisp +++ b/sql/metaclasses.lisp @@ -82,15 +82,6 @@ ((stringp arg) (sql-escape 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))))) - - (defun remove-keyword-arg (arglist akey) (let ((mylist arglist) (newlist ())) @@ -103,6 +94,14 @@ (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 @@ -122,12 +121,7 @@ direct-superclasses) (remove-keyword-arg all-keys :direct-superclasses))) (call-next-method)) - (setf (view-table class) - (table-name-from-arg (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)))) @@ -138,12 +132,7 @@ &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))) @@ -468,12 +457,9 @@ implementations." ;; 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 @@ -536,8 +522,7 @@ implementations." 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)