X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=sql%2Fmetaclasses.lisp;h=bb02da3899c849151288056ac2080f06ea0532d4;hp=f981c900be363b18be8e67cd8db6895e800d465e;hb=48720858048d54c9ff6b79dbce56549d01e452d1;hpb=5953db07cc2276392d0a81052d2d8c71d3252b5a diff --git a/sql/metaclasses.lisp b/sql/metaclasses.lisp index f981c90..bb02da3 100644 --- a/sql/metaclasses.lisp +++ b/sql/metaclasses.lisp @@ -12,7 +12,7 @@ ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. ;;;; ************************************************************************* -(in-package #:clsql) +(in-package #:clsql-sys) (eval-when (:compile-toplevel :load-toplevel :execute) (when (>= (length (generic-function-lambda-list @@ -52,7 +52,7 @@ :accessor view-class-qualifier :initarg :qualifier :initform nil)) - (:documentation "VIEW-CLASS metaclass.")) + (:documentation "Metaclass for all CLSQL View Classes.")) ;;; Lispworks 4.2 and before requires special processing of extra slot and class options @@ -281,13 +281,13 @@ column definition in the database.") :initarg :db-constraints :initform nil :documentation - "A single constraint or list of constraints for this column") + "A keyword symbol representing a single SQL column constraint or list of such symbols.") (void-value :accessor view-class-slot-void-value :initarg :void-value :initform nil :documentation - "Value to store is the SQL value is NULL. Default is NIL.") + "Value to store if the SQL value is NULL. Default is NIL.") (db-info :accessor view-class-slot-db-info :initarg :db-info @@ -362,7 +362,7 @@ column definition in the database.") (defun compute-class-precedence-list (class) (class-precedence-list class)))) -#-(or sbcl cmu) +#-mop-slot-order-reversed (defmethod compute-slots ((class standard-db-class)) "Need to sort order of class slots so they are the same across implementations." @@ -392,10 +392,20 @@ which does type checking before storing a value in a slot." ((and (symbolp (car specified-type)) (string-equal (symbol-name (car specified-type)) "string")) 'string) + ((and (symbolp (car specified-type)) + (string-equal (symbol-name (car specified-type)) "varchar")) + 'string) + ((and (symbolp (car specified-type)) + (string-equal (symbol-name (car specified-type)) "char")) + 'string) (t specified-type))) ((eq (ensure-keyword specified-type) :bigint) 'integer) + ((eq (ensure-keyword specified-type) :char) + 'character) + ((eq (ensure-keyword specified-type) :varchar) + 'string) ((and specified-type (not (eql :not-null (slot-value slotd 'db-constraints)))) `(or null ,specified-type)) @@ -413,7 +423,7 @@ which does type checking before storing a value in a slot." (car list) list)) -(declaim (inline delistify)) +(declaim (inline delistify-dsd)) (defun delistify-dsd (list) "Some MOPs, like openmcl 0.14.2, cons attribute values in a list." (if (and (listp list) (null (cdr list))) @@ -497,6 +507,7 @@ which does type checking before storing a value in a slot." ;; all other slots (t (let ((type-predicate #+openmcl (slot-value esd 'ccl::type-predicate))) + #-openmcl (declare (ignore type-predicate)) (change-class esd 'view-class-effective-slot-definition #+allegro :name #+allegro (slot-definition-name dsd))