(defun ensure-schema-version-table (database)
(unless (table-exists-p "clsql_object_v" :database database)
- (create-table [clsql_object_v] '(([name] (string 32))
+ (create-table [clsql_object_v] '(([name] string)
([vers] integer)
- ([def] (string 32)))
+ ([def] string))
:database database)))
(defun update-schema-version-records (view-class-name
&key (database *default-database*))
(let ((schemadef nil)
(tclass (find-class view-class-name)))
- (dolist (slotdef (class-slots tclass))
+ (dolist (slotdef (ordered-class-slots tclass))
(let ((res (database-generate-column-definition view-class-name
slotdef database)))
(when res (setf schemadef (cons res schemadef)))))
(values))
(defmethod %install-class ((self standard-db-class) database &aux schemadef)
- (dolist (slotdef (class-slots self))
+ (dolist (slotdef (ordered-class-slots self))
(let ((res (database-generate-column-definition (class-name self)
slotdef database)))
(when res
(defun generate-selection-list (vclass)
(let ((sels nil))
- (dolist (slotdef (class-slots vclass))
+ (dolist (slotdef (ordered-class-slots vclass))
(let ((res (generate-attribute-reference vclass slotdef)))
(when res
(push (cons slotdef res) sels))))
list))
(defun slot-type (slotdef)
- (let ((slot-type (slot-definition-type slotdef)))
+ (let ((slot-type (specified-type slotdef)))
(if (listp slot-type)
(cons (find-symbol (symbol-name (car slot-type)) :clsql-sys)
(cdr slot-type))
(db-value-from-slot slot value database)))))
(let* ((view-class (class-of obj))
(view-class-table (view-table view-class))
- (slots (remove-if-not #'slot-storedp (class-slots view-class)))
+ (slots (remove-if-not #'slot-storedp (ordered-class-slots view-class)))
(record-values (mapcar #'slot-value-list slots)))
(unless record-values
(error "No settable slots."))
(db-value-from-slot slot value database)))))
(let* ((view-class (class-of obj))
(view-class-table (view-table view-class))
- (slots (remove-if-not #'slot-storedp (class-slots view-class)))
+ (slots (remove-if-not #'slot-storedp (ordered-class-slots view-class)))
(record-values (mapcar #'slot-value-list slots)))
(unless record-values
(error "No settable slots."))
(let* ((view-class (class-of instance))
(joins (remove-if #'(lambda (sd)
(not (equal (view-class-slot-db-kind sd) :join)))
- (class-slots view-class))))
+ (ordered-class-slots view-class))))
(dolist (slot joins)
(let ((delete-rule (gethash :delete-rule (view-class-slot-db-info slot))))
(cond