r9450: 22 May 2004 Kevin Rosenberg
[clsql.git] / sql / generics.lisp
index a8de765681f9521c8f8b5e0329c23ca1903f3440..f4b28483051979d289987550b5452b4b36443c2d 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Author:   Kevin M. Rosenberg based on
 ;;;; Created:  Apr 2004
 ;;;;
-;;;; $Id: db-interface.lisp 9123 2004-04-21 20:34:42Z kevin $
+;;;; $Id$
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
 ;;;;
 
 (in-package #:clsql-sys)
 
+(defgeneric update-record-from-slot (object slot &key database)
+  (:documentation
+   "Updates the value stored in the column represented by the
+slot, specified by the CLOS slot name SLOT, of View Class
+instance OBJECT. DATABASE defaults to *DEFAULT-DATABASE* and
+specifies the database in which the update is made only if OBJECT
+is not associated with a database. In this case, a record is
+created in DATABASE and the attribute represented by SLOT is
+initialised from the value of the supplied slots with other
+attributes having default values. Furthermore, OBJECT becomes
+associated with DATABASE."))
+
+(defgeneric update-record-from-slots (object slots &key database)
+  (:documentation 
+   "Updates the values stored in the columns represented by the
+slots, specified by the CLOS slot names SLOTS, of View Class
+instance OBJECT. DATABASE defaults to *DEFAULT-DATABASE* and
+specifies the database in which the update is made only if OBJECT
+is not associated with a database. In this case, a record is
+created in the appropriate table of DATABASE and the attributes
+represented by SLOTS are initialised from the values of the
+supplied slots with other attributes having default
+values. Furthermore, OBJECT becomes associated with DATABASE."))
+
+(defgeneric update-records-from-instance (object &key database)
+  (:documentation
+   "Using an instance of a View Class, OBJECT, update the table
+that stores its instance data. DATABASE defaults to
+*DEFAULT-DATABASE* and specifies the database in which the update
+is made only if OBJECT is not associated with a database. In this
+case, a record is created in the appropriate table of DATABASE
+using values from the slot values of OBJECT, and OBJECT becomes
+associated with DATABASE."))
+
+(defgeneric delete-instance-records (object)
+  (:documentation
+   "Deletes the records represented by OBJECT in the appropriate
+table of the database associated with OBJECT. If OBJECT is not
+yet associated with a database, an error is signalled."))
+
+(defgeneric update-instance-from-records (object &key database)
+  (:documentation
+   "Updates the slot values of the View Class instance OBJECT
+using the attribute values of the appropriate table of DATABASE
+which defaults to the database associated with OBJECT or, if
+OBJECT is not associated with a database, *DEFAULT-DATABASE*.
+Join slots are updated but instances of the class on which the
+join is made are not updated."))
+
+(defgeneric update-slot-from-record (object slot &key database)
+  (:documentation
+   "Updates the slot value, specified by the CLOS slot name SLOT,
+of the View Class instance OBJECT using the attribute values of
+the appropriate table of DATABASE which defaults to the database
+associated with OBJECT or, if OBJECT is not associated with a
+database, *DEFAULT-DATABASE*.  Join slots are updated but
+instances of the class on which the join is made are not
+updated."))
+
+(defgeneric instance-refreshed (object) 
+  (:documentation 
+   "Provides a hook which is called within an object oriented
+call to SELECT with a non-nil value of REFRESH when the View
+Class instance OBJECT has been updated from the database. A
+method specialised on STANDARD-DB-OBJECT is provided which has no
+effects. Methods specialised on particular View Classes can be
+used to specify any operations that need to be made on View
+Classes instances which have been updated in calls to SELECT."))
+
+(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 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 postinitialize  (object)
-  )
-(defgeneric add-to-relation  (target slot-name value)
+(defgeneric database-output-sql-as-type  (type val database db-type)
   )
-(defgeneric remove-from-relation  (target slot-name value)
+(defgeneric read-sql-value  (val type database db-type)
   )