r8946: merge done except for changes in objects file
[clsql.git] / sql / objects.lisp
index a397b87eead6f1e035d98203a38b58a7e6f0db31..823df46069cd0ff6f5248db9859ee458798593f2 100644 (file)
@@ -20,7 +20,7 @@
     :initform nil
     :initarg :view-database
     :db-kind :virtual))
-  (:metaclass standard-db-class)
+  (:metaclass view-metaclass)
   (:documentation "Superclass for all CLSQL View Classes."))
 
 (defmethod view-database ((self standard-db-object))
@@ -29,7 +29,7 @@
 (defvar *db-deserializing* nil)
 (defvar *db-initializing* nil)
 
-(defmethod slot-value-using-class ((class standard-db-class) instance slot)
+(defmethod slot-value-using-class ((class view-metaclass) instance slot)
   (declare (optimize (speed 3)))
   (unless *db-deserializing*
     (let ((slot-name (%slot-name slot))
@@ -43,7 +43,7 @@
               (setf (slot-value instance slot-name) nil))))))
   (call-next-method))
 
-(defmethod (setf slot-value-using-class) (new-value (class standard-db-class)
+(defmethod (setf slot-value-using-class) (new-value (class view-metaclass)
                                          instance slot)
   (declare (ignore new-value instance slot))
   (call-next-method))
@@ -92,7 +92,7 @@
 ;; Build the database tables required to store the given view class
 ;;
 
-(defmethod database-pkey-constraint ((class standard-db-class) database)
+(defmethod database-pkey-constraint ((class view-metaclass) database)
   (let ((keylist (mapcar #'view-class-slot-column (keyslots-for-class class))))
     (when keylist 
       (format nil "CONSTRAINT ~APK PRIMARY KEY~A"
@@ -144,8 +144,8 @@ the view. The argument DATABASE has a default value of
         (error "Class ~s not found." view-class-name)))
   (values))
 
-(defmethod %install-class ((self standard-db-class) database &aux schemadef)
-  (dolist (slotdef (class-slots self))
+(defmethod %install-class ((self view-metaclass) database &aux schemadef)
+  (dolist (slotdef (ordered-class-slots self))
     (let ((res (database-generate-column-definition (class-name self)
                                                     slotdef database)))
       (when res 
@@ -218,7 +218,7 @@ SUPERS is nil then STANDARD-DB-OBJECT automatically becomes the
 superclass of the newly-defined View Class."
   `(progn
      (defclass ,class ,supers ,slots ,@options
-              (:metaclass standard-db-class))
+              (:metaclass view-metaclass))
      (finalize-inheritance (find-class ',class))))
 
 (defun keyslots-for-class (class)
@@ -262,7 +262,7 @@ superclass of the newly-defined View Class."
 
 (defun generate-selection-list (vclass)
   (let ((sels nil))
-    (dolist (slotdef (class-slots vclass))
+    (dolist (slotdef (ordered-class-slots vclass))
       (let ((res (generate-attribute-reference vclass slotdef)))
        (when res
           (push (cons slotdef res) sels))))
@@ -297,7 +297,7 @@ superclass of the newly-defined View Class."
       list))
 
 (defun slot-type (slotdef)
-  (let ((slot-type (slot-definition-type slotdef)))
+  (let ((slot-type (specified-type slotdef)))
     (if (listp slot-type)
         (cons (find-symbol (symbol-name (car slot-type)) :clsql-sys)
               (cdr slot-type))
@@ -529,7 +529,7 @@ associated with that database."))
                     (db-value-from-slot slot value database)))))
     (let* ((view-class (class-of obj))
           (view-class-table (view-table view-class))
-          (slots (remove-if-not #'slot-storedp (class-slots view-class)))
+          (slots (remove-if-not #'slot-storedp (ordered-class-slots view-class)))
           (record-values (mapcar #'slot-value-list slots)))
       (unless record-values
         (error "No settable slots."))
@@ -558,7 +558,7 @@ associated with that database."))
                     (db-value-from-slot slot value database)))))
     (let* ((view-class (class-of obj))
           (view-class-table (view-table view-class))
-          (slots (remove-if-not #'slot-storedp (class-slots view-class)))
+          (slots (remove-if-not #'slot-storedp (ordered-class-slots view-class)))
           (record-values (mapcar #'slot-value-list slots)))
       (unless record-values
         (error "No settable slots."))
@@ -619,7 +619,7 @@ associated with that database."))
   (let* ((view-class (class-of instance))
         (joins (remove-if #'(lambda (sd)
                               (not (equal (view-class-slot-db-kind sd) :join)))
-                          (class-slots view-class))))
+                          (ordered-class-slots view-class))))
     (dolist (slot joins)
       (let ((delete-rule (gethash :delete-rule (view-class-slot-db-info slot))))
        (cond