X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Foodml.lisp;h=aebadfa27b31346c0e1294f190cd7b669eb991c0;hp=a5b080f01f15f1007c5be49b0513df84b113dbf9;hb=67a677df17f4af2cbf6e57294605f2454c392e00;hpb=90896f2e0ea06af22bda925c71a7470cc1dda263 diff --git a/sql/oodml.lisp b/sql/oodml.lisp index a5b080f..aebadfa 100644 --- a/sql/oodml.lisp +++ b/sql/oodml.lisp @@ -103,7 +103,7 @@ ((typep slot-reader 'string) (setf (slot-value instance slot-name) (format nil slot-reader value))) - ((typep slot-reader 'function) + ((typep slot-reader '(or symbol function)) (setf (slot-value instance slot-name) (apply slot-reader (list value)))) (t @@ -120,7 +120,7 @@ nil) ((typep slot-reader 'string) (format nil slot-reader value)) - ((typep slot-reader 'function) + ((typep slot-reader '(or symbol function)) (apply slot-reader (list value))) (t (error "Slot reader is of an unusual type."))))) @@ -130,7 +130,7 @@ (dbtype (specified-type slotdef))) (typecase dbwriter (string (format nil dbwriter val)) - (function (apply dbwriter (list val))) + ((or symbol function) (apply dbwriter (list val))) (t (database-output-sql-as-type (typecase dbtype @@ -211,9 +211,8 @@ (error "Unable to update records")))) (values)) -(defmethod update-records-from-instance ((obj standard-db-object) - &key (database *default-database*)) - (let ((database (or (view-database obj) database))) +(defmethod update-records-from-instance ((obj standard-db-object) &key database) + (let ((database (or database (view-database obj) *default-database*))) (labels ((slot-storedp (slot) (and (member (view-class-slot-db-kind slot) '(:base :key)) (slot-boundp obj (slot-definition-name slot)))) @@ -262,8 +261,9 @@ (sels (generate-selection-list view-class)) (res (apply #'select (append (mapcar #'cdr sels) (list :from view-table - :where view-qual) - (list :result-types nil))))) + :where view-qual + :result-types nil + :database vd))))) (when res (get-slot-values-from-view instance (mapcar #'car sels) (car res))))) @@ -643,7 +643,8 @@ :attribute (gethash :home-key tdbi) :table jc-view-table)) :where jq - :result-types :auto))) + :result-types :auto + :database (view-database object)))) (mapcar #'(lambda (i) (let* ((instance (car i)) (jcc (make-instance jc :view-database (view-database instance))))