(: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))))
(res (fault-join-slot-raw class object slot-def)))
(when res
(cond
+ ((and ts (gethash :target-slot dbi) (gethash :set dbi))
+ (mapcar (lambda (obj)
+ (let* ((target-name (gethash :target-slot dbi))
+ (target-class (find-class target-name)))
+ (cons
+ (car
+ (fault-join-slot-raw
+ target-class
+ obj
+ (find target-name (class-slots (class-of obj))
+ :key #'slot-definition-name)))
+ obj)))
+ res))
((and ts (gethash :set dbi))
(mapcar (lambda (obj)
(cons obj (slot-value obj ts))) res))
(defun find-all (view-classes &rest args &key all set-operation distinct from
where group-by having order-by order-by-descending offset limit
- refresh flatp (database *default-database*))
+ refresh flatp result-types (database *default-database*))
"Called by SELECT to generate object query results when the
View Classes VIEW-CLASSES are passed as arguments to SELECT."
- (declare (ignore all set-operation group-by having offset limit)
+ (declare (ignore all set-operation group-by having offset limit result-types)
(optimize (debug 3) (speed 1)))
(remf args :from)
(remf args :flatp)