[Add many to many relation class for spell-levels <-> spells clinton@unknownlamer.org**20080430185652 * Update shared-initialize to work properly when deserializing instances from the database ] { hunk ./src/derived-index-functions.lisp 9 +(defclass spell-level<->spell () + ((spell :initarg :spell :accessor spell :index t) + (level :initarg :level :accessor spell-level :index t)) + (:metaclass persistent-metaclass)) + +(defun update-spell-level<->spell-index (spell) + (drop-instances (get-instances-by-value 'spell-level<->spell 'spell spell)) + (map-pset (lambda (level) + (make-instance 'spell-level<->spell :spell spell :level level)) + (spell-levels spell))) hunk ./src/spells.lisp 89 + &rest args hunk ./src/spells.lisp 91 - (insert-item self (spell-school self)) - (map-pset (curry #'insert-item self) - (spell-levels self))) + (cond ((and (not (member :from-oid args)) + (member :levels args)) + (update-spell-level<->spell-index self)))) + +(defmethod (setf spell-levels) :after (new (spell spell)) + (update-spell-level<->spell-index spell)) hunk ./src/spells.lisp 99 - (remove-item spell (spell-school spell)) - (map-pset (curry #'remove-item spell) - (spell-levels spell))) + (drop-instances (get-instances-by-value 'spell-level<->spell 'spell spell))) }