+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (when (char= #\a (schar (symbol-name '#:a) 0))
+ (pushnew :lowercase-reader *features*)))
+
+(defun symbol-name-default-case (str)
+ #-lowercase-reader
+ (string-upcase str)
+ #+lowercase-reader
+ (string-downcase str))
+
+(defun convert-to-db-default-case (str database)
+ (if database
+ (case (db-type-default-case (database-underlying-type database))
+ (:upper (string-upcase str))
+ (:lower (string-downcase str))
+ (t str))
+ ;; Default CommonSQL behavior is to upcase strings
+ (string-upcase str)))
+
+
+(defun ensure-keyword (name)
+ "Returns keyword for a name"
+ (etypecase name
+ (keyword name)
+ (string (nth-value 0 (intern (symbol-name-default-case name) :keyword)))
+ (symbol (nth-value 0 (intern (symbol-name name) :keyword)))))