(in-package :it.bese.ucw)
(defun multiple-value-funcall->list (function &rest args)
+ "The function to be called by m-v-bf"
(multiple-value-call #'list (apply function args)))
(defmacro multiple-value-bindf (vars form &body body)
+ "Like M-V-B, only it works in actions. form must be a function call"
`(destructuring-bind ,vars
(multiple-value-funcall->list #',(car form) ,@(cdr form))
,@body))
(linkedp :accessor linkedp :initarg :linkedp :initform t))
(:type-name relation))
-(defun get-fkey-data (instance slot-name)
- "ugly workaround b/c UCW does not like M-V-B"
- (multiple-value-bind (finstance foreign-slot-name)
- (meta-model:explode-foreign-key instance slot-name)
- (cons finstance foreign-slot-name)))
-
(defaction search-records ((slot mewa-relation-slot-presentation) instance)
(multiple-value-bindf (finstance foreign-slot-name)
(meta-model:explode-foreign-key instance (slot-name slot))
(defaction add-to-has-many ((slot has-many-slot-presentation) instance)
+ ;; if the instance is not stored we must make sure to mark it stored now!
+ (unless (mewa::instance-is-stored-p instance)
+ (setf (mewa::modifiedp (parent self)) t))
+ ;; sync up the instance
(mewa:ensure-instance-sync (parent slot))
+
(multiple-value-bindf (class home foreign)
(meta-model:explode-has-many instance (slot-name slot))
(let ((new (make-instance class)))