Skip to content

Commit

Permalink
Delegate stream creation to GridFS
Browse files Browse the repository at this point in the history
  • Loading branch information
jokimaki committed Nov 20, 2016
1 parent b1cfb54 commit 1170f34
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/clojure/monger/gridfs.clj
Expand Up @@ -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]
Expand Down

0 comments on commit 1170f34

Please sign in to comment.