X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fgenerics.lisp;h=860771e862eda4191a3c1d9feba37ab84536fff3;hp=9ff64921b2413c39709815539e2328708aaad5b5;hb=d2d49ab13c98bc7a1819a0fd3968268a5567bdc3;hpb=dea46c447f6688f1519a6fbe7f5998d0eab7474c diff --git a/sql/generics.lisp b/sql/generics.lisp index 9ff6492..860771e 100644 --- a/sql/generics.lisp +++ b/sql/generics.lisp @@ -4,12 +4,10 @@ ;;;; ;;;; Name: generics.lisp ;;;; Purpose: Generic function definitions for DB interfaces -;;;; Author: Kevin M. Rosenberg based on +;;;; Author: Kevin M. Rosenberg ;;;; 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 @@ -19,7 +17,7 @@ (in-package #:clsql-sys) -;; FDML +;; FDML (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.")) -;; OODML +;; OODML (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) - (: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 @@ -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.")) -(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 @@ -125,21 +123,9 @@ 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-pkey-constraint (class database) ) -(defgeneric database-constraint-statement (constraints database) - ) -(defgeneric %install-class (class 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) ) + +;; 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) + )