From cff8a2497b3f111a43d819476b55bfad2b447532 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Fri, 23 Apr 2004 03:47:55 +0000 Subject: [PATCH] r9137: add defgenerics --- base/db-interface.lisp | 7 ------- base/time.lisp | 3 +++ base/utils.lisp | 2 +- clsql.asd | 2 +- sql/classes.lisp | 2 +- sql/generics.lisp | 30 ++++++++++++++++++++++++++++++ 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/base/db-interface.lisp b/base/db-interface.lisp index 64a15c5..2d52105 100644 --- a/base/db-interface.lisp +++ b/base/db-interface.lisp @@ -30,13 +30,6 @@ "The internal generic implementation for checking if database type library loaded successfully.")) -(defgeneric database-type (database) - (:documentation - "Returns database type") - (:method (database) - (signal-no-database-error database))) - - (defgeneric database-initialize-database-type (database-type) (:documentation "The internal generic implementation of initialize-database-type.")) diff --git a/base/time.lisp b/base/time.lisp index 44f10e1..80e5bed 100644 --- a/base/time.lisp +++ b/base/time.lisp @@ -785,6 +785,9 @@ with the given options" (t (values hours "AM")))) +(defgeneric to-string (val &rest keys) + ) + (defmethod to-string ((time wall-time) &rest keys) (destructuring-bind (&key (style :daytime) &allow-other-keys) keys diff --git a/base/utils.lisp b/base/utils.lisp index 9fb6e7c..0968f96 100644 --- a/base/utils.lisp +++ b/base/utils.lisp @@ -342,7 +342,7 @@ list of characters and replacement strings." #+lowercase-reader (string-downcase str)) -(defmethod convert-to-db-default-case (str database) +(defun convert-to-db-default-case (str database) (if database (case (db-type-default-case (database-underlying-type database)) (:upper (string-upcase str)) diff --git a/clsql.asd b/clsql.asd index 6bd2b9b..80bcc55 100644 --- a/clsql.asd +++ b/clsql.asd @@ -40,7 +40,7 @@ a functional and an object oriented interface." (:module :core :pathname "" :components ((:file "generics") - (:file "classes") + (:file "classes" :depends-on ("generics")) (:file "operations" :depends-on ("classes")) (:file "syntax")) :depends-on (:package)) diff --git a/sql/classes.lisp b/sql/classes.lisp index c2cd651..c6cf764 100644 --- a/sql/classes.lisp +++ b/sql/classes.lisp @@ -432,7 +432,7 @@ uninclusive, and the args from that keyword to the end." (subseq select-args first-key-arg)) select-args))) -(defmethod make-query (&rest args) +(defun make-query (&rest args) (multiple-value-bind (selections arglist) (query-get-selections args) (destructuring-bind (&key all flatp set-operation distinct from where diff --git a/sql/generics.lisp b/sql/generics.lisp index eabb8e5..a8de765 100644 --- a/sql/generics.lisp +++ b/sql/generics.lisp @@ -24,4 +24,34 @@ (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 postinitialize (object) + ) +(defgeneric add-to-relation (target slot-name value) + ) +(defgeneric remove-from-relation (target slot-name value) + ) -- 2.34.1