X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Foodml.lisp;fp=sql%2Foodml.lisp;h=e50905e93436755f53f37bbc49ce9f3bcc06412e;hp=e2f98a342b788044b54594acb5178cf65f9a70f8;hb=3c3aa36478f0609e60d83e6c936bf2096fcae726;hpb=d723e681ead5613b5ad8ad463c0bbd0c8f6aba1f diff --git a/sql/oodml.lisp b/sql/oodml.lisp index e2f98a3..e50905e 100644 --- a/sql/oodml.lisp +++ b/sql/oodml.lisp @@ -185,15 +185,6 @@ (list (sql-expression :attribute (view-class-slot-column slot)) (db-value-from-slot slot value database)))) - (get-pk (pk-slot) - (if (member :auto-increment (listify (view-class-slot-db-constraints pk-slot))) - (setf (slot-value obj (slot-definition-name pk-slot)) - ;;this should probably be moved into it's own function. - (car (query "SELECT LAST_INSERT_ID();" - :flatp t :field-names nil - :database database))) - (slot-value obj (slot-definition-name pk-slot)))) - (save-slots-for-class (view-class stored-slot-defs) (let ((pk-slot (car (keyslots-for-class view-class))) (table (sql-expression :table (view-table view-class))) @@ -234,15 +225,21 @@ :this-class view-class) :database database) (when (and pk-slot (not pk)) - (setf pk (slot-value obj (slot-definition-name pk-slot))))) + (setf pk (slot-value obj (slot-definition-name pk-slot)))) + pk) (t (insert-records :into table :av-pairs av-pairs :database database) - (when pk-slot - (setf pk (or pk (get-pk pk-slot))) - - ))))))) + (when (and pk-slot (not pk)) + (setf pk (if (member :auto-increment (listify (view-class-slot-db-constraints pk-slot))) + (setf (slot-value obj (slot-definition-name pk-slot)) + (database-last-autoincrement-id database + table + pk-slot)))) + + ) + pk)))))) (save-slots-for-class