;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
-(in-package #:clsql-sys)
+(in-package #:clsql)
+
+(defgeneric update-record-from-slot (object slot &key database)
+ (:documentation
+ "The generic function UPDATE-RECORD-FROM-SLOT updates an individual
+data item in the column represented by SLOT. The DATABASE is only used
+if OBJECT is not yet associated with any database, in which case a
+record is created in DATABASE. Only SLOT is initialized in this case;
+other columns in the underlying database receive default values. The
+argument SLOT is the CLOS slot name; the corresponding column names
+are derived from the View Class definition."))
+
+(defgeneric update-record-from-slots (object slots &key database)
+ (:documentation
+ "The generic function UPDATE-RECORD-FROM-SLOTS updates data in the
+columns represented by SLOTS. The DATABASE is only used if OBJECT is
+not yet associated with any database, in which case a record is
+created in DATABASE. Only slots are initialized in this case; other
+columns in the underlying database receive default values. The
+argument SLOTS contains the CLOS slot names; the corresponding column
+names are derived from the view class definition."))
+
+(defgeneric update-records-from-instance (object &key database)
+ (:documentation
+ "Using an instance of a view class, OBJECT, update the database
+table that stores its instance data. If OBJECT is already associated
+with a database, that database is used, and DATABASE is ignored. If
+OBJECT is not yet associated with a database, a record is created for
+instance in the appropriate table of DATABASE and the instance becomes
+associated with that database."))
+
+(defgeneric delete-instance-records (instance)
+ (:documentation
+ "Deletes the records represented by INSTANCE from the database
+associated with it. If INSTANCE has no associated database, an error
+is signalled."))
+
+(defgeneric update-instance-from-records (instance &key database)
+ (:documentation
+ "The generic function UPDATE-INSTANCE-FROM-RECORDS updates the
+values in the slots of the View Class instance INSTANCE using the data
+in the database DATABASE which defaults to the DATABASE that instance
+is associated with, or the value of *DEFAULT-DATABASE*. If INSTANCE is
+associated with a database, then DATABASE must be that same
+database. The update is not recursive on joins. Join slots (that is,
+slots with :db-kind :join ) are updated, but the joined objects are
+not updated."))
+
+(defgeneric update-slot-from-record (instance slot &key database)
+ (:documentation
+ "Updates the value in the slot SLOT of the View Class instance
+INSTANCE using the data in the database DATABASE which defaults to the
+database that INSTANCE is associated with, or the value of
+*DEFAULT-DATABASE*. The argument SLOT is the CLOS slot name, the
+corresponding column names are derived from the View Class
+definition. The update is not recursive on joins. Join slots (that is,
+slots with :db-kind :join) are updated, but the joined objects are not
+updated."))
+
+(defgeneric instance-refreshed (instance)
+ (:documentation
+ "The function INSTANCE-REFRESHED is called inside SELECT when its
+REFRESH argument is true and the instance INSTANCE has just been
+updated. The supplied method on STANDARD-DB-OBJECT does nothing. If
+your application needs to take action when a View Class instance has
+been updated by (select ... :refresh t) then add an INSTANCE-REFRESH
+method specializing on your subclass of STANDARD-DB-OBJECT."))
+
+(defgeneric update-slot-with-null (instance slotname slotdef)
+ (:documentation "Called to update a slot when its column has a NULL
+value. If nulls are allowed for the column, the slot's value will be
+nil, otherwise its value will be set to the result of calling
+DATABASE-NULL-VALUE on the type of the slot."))
(defgeneric output-sql (expr database)
)
(defgeneric output-sql-hash-key (arg database)
)
+(defgeneric collect-table-refs (sql)
+ )
+(defgeneric database-output-sql (arg database)
+ )
+(defgeneric database-constraint-description (constraint database)
+ )
+(defgeneric database-pkey-constraint (class database)
+ )
+(defgeneric database-constraint-statement (constraints database)
+ )
+(defgeneric %install-class (class database)
+ )
+(defgeneric database-generate-column-definition (class slotdef database)
+ )
+(defgeneric update-slot-from-db (instance slotdef val)
+ )
+(defgeneric key-value-from-db (slotdef value database)
+ )
+(defgeneric get-slot-values-from-view (obj slotdeflist values)
+ )
+(defgeneric database-output-sql-as-type (type val database)
+ )
+(defgeneric read-sql-value (val type database)
+ )
+(defgeneric add-to-relation (target slot-name value)
+ )
+(defgeneric remove-from-relation (target slot-name value)
+ )