r9242: make update-records-from-instance on make-instance selectable
authorKevin M. Rosenberg <kevin@rosenberg.net>
Wed, 5 May 2004 06:23:38 +0000 (06:23 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Wed, 5 May 2004 06:23:38 +0000 (06:23 +0000)
ChangeLog
sql/objects.lisp
sql/package.lisp

index 223de7d3fd0f47a8a4f20f59955f229427b4bfe1..fe6e0f957eb1a6e9576ac97acb71ce3d832a27b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,7 +4,9 @@
        * sql/objects.lisp: Make SELECT a normal function.
        SELECT now accepts type-modified database identifiers, such as
         [foo :string] which means that the values in column foo are returned 
-        as Lisp strings.
+        as Lisp strings. Add new *update-records-on-make-instance* special
+       variable controlling automatic creation of new instances.
+       * sql/packages.lisp: Export *update-records-on-make-instance* 
        * test/test-fdml.lisp: Add tests for type-modified
        database identifiers.
        
index 833abd79e0510f3a47682bbea747a793fdc27b1a..1342fe3a09ced2c6a4dc7b2740aed1e7788944f8 100644 (file)
   (:metaclass standard-db-class)
   (:documentation "Superclass for all CLSQL View Classes."))
 
+(defvar *update-records-on-make-instance* nil
+  "When T, UPDATE-RECORDS-FROM-INSTANCE will be automatically called
+when a new instance of a view-class is created.")
+
 (defvar *db-deserializing* nil)
 (defvar *db-initializing* nil)
 
               (setf (slot-value instance slot-name) nil))))))
   (call-next-method))
 
+#+ignore ;; not currently used
 (defmethod (setf slot-value-using-class) (new-value (class standard-db-class)
                                          instance slot)
   (declare (ignore new-value instance slot))
   (call-next-method))
 
-(defmethod initialize-instance :around ((object standard-db-object)
+(defmethod initialize-instance ((object standard-db-object)
                                        &rest all-keys &key &allow-other-keys)
   (declare (ignore all-keys))
   (let ((*db-initializing* t))
     (call-next-method)
-    (unless *db-deserializing*
+    (when (and *update-records-on-make-instance*
+              (not *db-deserializing*))
       #+nil (created-object object)
       (update-records-from-instance object))))
 
index 7a48137f65ae73b84f083eb62e800fb36d13462f..98bfd2d404267d5ac61916e394624a12c577a26e 100644 (file)
        #:locally-enable-sql-reader-syntax  ; syntax     xx
        #:restore-sql-reader-syntax-state   ; syntax     xx
 
+       #:*update-records-on-make-instance* 
+       
        ;;------------------------------------------------
        ;; Miscellaneous Extensions
        ;;------------------------------------------------