From 79cdb16ebd29e11e9762ec81c32314433d85eaad Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Wed, 5 May 2004 06:23:38 +0000 Subject: [PATCH] r9242: make update-records-from-instance on make-instance selectable --- ChangeLog | 4 +++- sql/objects.lisp | 10 ++++++++-- sql/package.lisp | 2 ++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 223de7d..fe6e0f9 100644 --- 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. diff --git a/sql/objects.lisp b/sql/objects.lisp index 833abd7..1342fe3 100644 --- a/sql/objects.lisp +++ b/sql/objects.lisp @@ -21,6 +21,10 @@ (: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) @@ -39,17 +43,19 @@ (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)))) diff --git a/sql/package.lisp b/sql/package.lisp index 7a48137..98bfd2d 100644 --- a/sql/package.lisp +++ b/sql/package.lisp @@ -350,6 +350,8 @@ #:locally-enable-sql-reader-syntax ; syntax xx #:restore-sql-reader-syntax-state ; syntax xx + #:*update-records-on-make-instance* + ;;------------------------------------------------ ;; Miscellaneous Extensions ;;------------------------------------------------ -- 2.34.1