;; FDML
+(defgeneric choose-database-for-instance (object &optional database)
+ (:documentation "Used by the oodml functions to select which
+ database object to use. Chooses the database associated with the
+ object primarily, falls back to the database provided as an argument
+ or the *DEFAULT-DATABASE*."))
(defgeneric execute-command (expression &key database)
(:documentation
using values from the slot values of OBJECT, and OBJECT becomes
associated with DATABASE."))
-(defgeneric delete-instance-records (object)
+(defgeneric delete-instance-records (object &key database)
(:documentation
"Deletes the records represented by OBJECT in the appropriate
table of the database associated with OBJECT. If OBJECT is not
)
(defgeneric read-sql-value (val type database db-type)
)
-(defgeneric database-make-autoincrement-sequence (class slotdef database)
+(defgeneric database-add-autoincrement-sequence (class database)
+ (:method (class database) nil)
+ (:documentation "If a database needs to add a sequence for its
+ autoincrement to work, this is where it should go. Default is
+ that it doesnt so just return nil"))
+(defgeneric database-remove-autoincrement-sequence (class database)
+ (:method (class database) nil)
+ (:documentation "If a database needs to add a sequence for its
+ autoincrement to work, this is where it should go. Default is
+ that it doesnt so just return nil"))
+(defgeneric auto-increment-sequence-name (class slotdef database)
+ (:documentation "The sequence name to create for this autoincremnt column on this class
+ if returns nil, there is no associated sequence "))
+
+(defmethod auto-increment-sequence-name :around (class slot database)
+ (when (auto-increment-column-p slot database)
+ (call-next-method)))
+
+(defgeneric database-last-auto-increment-id (database table column)
)
+
+
;; Generation of SQL strings from lisp expressions
(defgeneric output-sql (expr database)