Remove CVS $Id$ keyword
[clsql.git] / sql / generics.lisp
index 5bc74ca9e2514240a5b1f67cb5210178f4f426bc..860771e862eda4191a3c1d9feba37ab84536fff3 100644 (file)
@@ -4,12 +4,10 @@
 ;;;;
 ;;;; Name:     generics.lisp
 ;;;; Purpose:  Generic function definitions for DB interfaces
 ;;;;
 ;;;; Name:     generics.lisp
 ;;;; Purpose:  Generic function definitions for DB interfaces
-;;;; Author:   Kevin M. Rosenberg based on
+;;;; Author:   Kevin M. Rosenberg
 ;;;; Created:  Apr 2004
 ;;;;
 ;;;; Created:  Apr 2004
 ;;;;
-;;;; $Id$
-;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2004-2010 by Kevin M. Rosenberg
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
@@ -19,7 +17,7 @@
 (in-package #:clsql-sys)
 
 
 (in-package #:clsql-sys)
 
 
-;; FDML 
+;; FDML
 
 (defgeneric execute-command (expression &key database)
   (:documentation
 
 (defgeneric execute-command (expression &key database)
   (:documentation
@@ -48,7 +46,7 @@ record selected by QUERY-EXPRESSION, the results are returned as
 elements of a list."))
 
 
 elements of a list."))
 
 
-;; OODML 
+;; OODML
 
 (defgeneric update-record-from-slot (object slot &key database)
   (:documentation
 
 (defgeneric update-record-from-slot (object slot &key database)
   (:documentation
@@ -63,7 +61,7 @@ attributes having default values. Furthermore, OBJECT becomes
 associated with DATABASE."))
 
 (defgeneric update-record-from-slots (object slots &key database)
 associated with DATABASE."))
 
 (defgeneric update-record-from-slots (object slots &key database)
-  (:documentation 
+  (: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
    "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
@@ -109,8 +107,8 @@ database, *DEFAULT-DATABASE*.  Join slots are updated but
 instances of the class on which the join is made are not
 updated."))
 
 instances of the class on which the join is made are not
 updated."))
 
-(defgeneric instance-refreshed (object) 
-  (:documentation 
+(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
    "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
@@ -125,20 +123,8 @@ 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."))
 
 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-pkey-constraint  (class database)
   )
 (defgeneric database-pkey-constraint  (class database)
   )
-(defgeneric database-constraint-statement  (constraints database)
-  )
 (defgeneric %install-class  (class database &key transactions)
   )
 (defgeneric database-generate-column-definition  (class slotdef database)
 (defgeneric %install-class  (class database &key transactions)
   )
 (defgeneric database-generate-column-definition  (class slotdef database)
@@ -154,3 +140,30 @@ DATABASE-NULL-VALUE on the type of the slot."))
 (defgeneric read-sql-value  (val type database db-type)
   )
 
 (defgeneric read-sql-value  (val type database db-type)
   )
 
+
+;; Generation of SQL strings from lisp expressions
+
+(defgeneric output-sql (expr database)
+  (:documentation "Writes an SQL string appropriate for DATABASE
+  and corresponding to the lisp expression EXPR to
+  *SQL-STREAM*. The function SQL-OUTPUT is a top-level call for
+  generating SQL strings which initialises *SQL-STREAM*, calls
+  OUTPUT-SQL and reads the generated SQL string from
+  *SQL-STREAM*."))
+
+(defgeneric database-output-sql (expr database)
+  (:documentation "Returns an SQL string appropriate for DATABASE
+  and corresponding to the lisp expression
+  EXPR. DATABASE-OUTPUT-SQL is called by OUTPUT-SQL when no more
+  specific method exists for EXPR."))
+
+(defgeneric output-sql-hash-key (expr database)
+  (:documentation "Returns a list (or other object suitable for
+use as the key of an EQUAL hash table) which uniquely identifies
+the arguments EXPR and DATABASE."))
+
+(defgeneric collect-table-refs (sql)
+  )
+
+(defgeneric database-constraint-statement  (constraints database)
+  )