From 1170f342ddbacfbf7d3888f8101a93a011b42469 Mon Sep 17 00:00:00 2001 From: Juha Jokimaki Date: Sun, 20 Nov 2016 18:03:11 +0200 Subject: [PATCH] Delegate stream creation to GridFS --- src/clojure/monger/gridfs.clj | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/clojure/monger/gridfs.clj b/src/clojure/monger/gridfs.clj index 63adf55..a3f60f9 100644 --- a/src/clojure/monger/gridfs.clj +++ b/src/clojure/monger/gridfs.clj @@ -114,9 +114,30 @@ (to-input-stream [^InputStream input] input)) +(defprotocol GridFSInputFileFactory + (^GridFSInputFile create-gridfs-file [input ^GridFS fs] "Creates a file entry")) + +(extend byte-array-type + GridFSInputFileFactory + {:create-gridfs-file (fn [^bytes input ^GridFS fs] + (.createFile fs input))}) + +(extend-protocol GridFSInputFileFactory + String + (create-gridfs-file [^String input ^GridFS fs] + (.createFile fs (io/file input))) + + File + (create-gridfs-file [^File input ^GridFS fs] + (.createFile fs input)) + + InputStream + (create-gridfs-file [^InputStream input ^GridFS fs] + (.createFile fs input))) + (defn ^GridFSInputFile make-input-file [^GridFS fs input] - (.createFile fs (to-input-stream input) true)) + (create-gridfs-file input fs)) (defmacro store [^GridFSInputFile input & body]