Revision: 4113
Author: hans
URL: http://bknr.net/trac/changeset/4113
Add new :IF-EXISTS keyword argument to MAKE-STORE-IMAGE that can be
set to control whether an existing image of the same name should be
overwritten.
U trunk/bknr/web/src/images/image.lisp
Modified: trunk/bknr/web/src/images/image.lisp
===================================================================
--- trunk/bknr/web/src/images/image.lisp 2008-12-04 15:02:57 UTC (rev 4112)
+++ trunk/bknr/web/src/images/image.lisp 2008-12-05 09:49:44 UTC (rev 4113)
@@ -65,12 +65,20 @@
name
(type :png)
directory keywords
+ (if-exists :error)
(class-name 'store-image)
initargs)
(unless (scan #?r"\D" name)
(error "invalid image name ~A, needs to contain at least one non-digit character" name))
- (when (store-image-with-name name)
- (error "can't make image with name ~A, an image with this name already exists in the datastore" name))
+ (when-let (existing-image (store-image-with-name name))
+ (ecase if-exists
+ (:error
+ (error "can't make image with name ~A, an image with this name already exists in the datastore" name))
+ (:supersede
+ (delete-object existing-image))
+ (:kill
+ (delete-file (blob-pathname existing-image))
+ (delete-object existing-image))))
(let ((store-image (apply #'make-instance
class-name
:name name