* 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.
(: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))))
#:locally-enable-sql-reader-syntax ; syntax xx
#:restore-sql-reader-syntax-state ; syntax xx
+ #:*update-records-on-make-instance*
+
;;------------------------------------------------
;; Miscellaneous Extensions
;;------------------------------------------------