Commit graph

212 commits

Author SHA1 Message Date
Michael S. Klishin
3357179659 One more spot 2011-12-18 23:25:28 +04:00
Michael S. Klishin
3b3bb2287a Extract test DB connection into a helper, use it for every namespace that hits the database 2011-12-18 23:24:23 +04:00
Michael S. Klishin
cd1bd23b3e Switch test suite to monger.testing/defcleaner 2011-12-18 23:16:54 +04:00
Michael S. Klishin
19a9beb046 Add test examples that demonstrate java.util.Date and java.util.Calendar conversion 2011-12-16 11:42:13 +04:00
Michael S. Klishin
57c4ad6e9b Switch to clojure.java.io/resource here 2011-12-16 11:12:55 +04:00
Oleksandr Petrov
e6f81e52a7 Merge branch 'master' of https://github.com/michaelklishin/monger 2011-12-03 18:40:52 +01:00
Oleksandr Petrov
611d9666bd Added get-write-concern function. 2011-12-03 18:39:02 +01:00
Michael S. Klishin
8127d26442 Fix monger.util/get-id for persistent maps with string keys 2011-11-29 15:44:55 +04:00
Michael S. Klishin
be06397849 Introduce monger.collection/any?
Useful for detecting duplicate documents and so on
2011-11-28 20:12:19 +04:00
Oleksandr Petrov
01063a3476 Removing outdated comment 2011-11-25 17:33:10 +01:00
Oleksandr Petrov
94acfdec54 Changing 'is' test to 'are' for brevity. 2011-11-19 23:41:53 +01:00
Michael S. Klishin
ddcbf2d068 One more test for clojure.data.json integration 2011-11-16 01:00:18 +04:00
Michael S. Klishin
d9f5ae5951 Move pagination helper to monger.internal.pagination 2011-11-15 03:48:31 +04:00
Michael S. Klishin
3534e579b7 Add pagination support to monger.query DSL
An example:

(with-collection coll
                  (find {})
                  (paginate :page 1 :per-page 3)
                  (sort { :title 1 }))
2011-11-15 03:44:19 +04:00
Michael S. Klishin
9b5eee13e0 Port many monger.test.querying tests to use new monger.query DSL 2011-11-15 03:10:55 +04:00
Michael S. Klishin
0536244dce Merge branch 'master' into query-dsl
Conflicts:
	src/monger/operators.clj
2011-11-14 15:23:47 +04:00
Michael S. Klishin
bd133c1afc Initial version of the monger.query DSL
Here is what it looks like:

(with-collection "docs"
  (find { :inception_year { $lt 2000 $gte 2011 } })
  (fields { :inception_year 1 :name 1 })
  (skip 10)
  (limit 20)
  (batch-size 50)
  (hint "my-index-name")
  (snapshot))
2011-11-14 15:15:43 +04:00
Oleksandr Petrov
8c93095393 Adding test demonstrating regexp document search. 2011-11-13 17:47:26 +01:00
Oleksandr Petrov
047d5b6a88 Separating operators to Logical Operators, Query Operators and Atomic Modifiers.
Adding docs to most of operators (still TBC), giving more examples, improving test suite.
2011-11-11 18:55:43 +01:00
Michael S. Klishin
99c46c4860 Merge branch 'master' into query-dsl 2011-11-09 12:44:56 +04:00
Michael S. Klishin
c109702117 Rewort $operator macros to evaluate to strings and not functions
Unlike Casbah and Korma, we already use query language data structures as close to what MongoDB uses as possible
(Clojure maps, vectors, numerics and strings are effectively JSON) so we don't need any layers on top, they won't improve
anything.

Having these operators is nice beacuse if you use atomic operators a lot, this will make sure Clojure compiler catches
typos for you. It is completely opt-in, however.

Finally, having a function inserted carries certain runtime performance cost and having $operator macros
that evaluate to themselves does not.

Per discussion with Alex.
2011-11-09 12:40:22 +04:00
Oleksandr Petrov
bb169d3ae3 Adding operators DSL in order to use Clojure functions instead of hashes.
Casbah has a similar concept called Bareword Operators.
Korma uses operators a bit differently, but idea is quite same, too. 

One of the obvious advantages is that you can make sure you didn't screw make a typo 
in operator name during compile-time. Plus, we can guarantee that there is a subset
of used / supported operators, and add them gradually, keeping track of them in one place, 
which will simplify tests, too.
2011-11-08 00:12:10 +01:00
Michael S. Klishin
88fa9f07bb Query DSL work preparation 2011-11-06 23:03:36 +04:00
Michael S. Klishin
6dd3491d39 A few more test examples using "advanced" query operators 2011-11-06 04:59:27 +04:00
Michael S. Klishin
758fb9e7e6 Support skip & limit for monger.collection/find and /find-maps
As test example demonstrates, closely following DBCollection and DBCursor API has one downside:
queries that use sorting look really ugly. So monger needs to come up with a DSL  la Casbah or SQLKorma
to make this really nice.
2011-11-05 09:45:54 +04:00
Michael S. Klishin
7a9dcbf15d Tests/examples for the $rename modifier 2011-10-31 02:52:44 +04:00
Michael S. Klishin
f29d62f181 Tests/examples for $pull and $pullAll modifiers 2011-10-31 02:40:55 +04:00
Michael S. Klishin
60ca5c04a2 Tests/examples for the $pop modifier 2011-10-31 02:30:07 +04:00
Michael S. Klishin
ec26008c4f Tests/examples for the $addToSet modifier 2011-10-31 02:20:54 +04:00
Michael S. Klishin
6615c16675 Tests/examples for the $pushAll modifier
Also demonstrate a common mistake when $push is used instead of $pushAll with an
array value.
2011-10-31 00:49:44 +04:00
Michael S. Klishin
5dba219537 Tests/examples for the $push modifier 2011-10-31 00:12:43 +04:00
Michael S. Klishin
537969ff09 Tests/examples for the modifier 2011-10-30 23:57:33 +04:00
Michael S. Klishin
d855762546 Tests/examples for the $inc modifier 2011-10-30 19:01:01 +04:00
Michael S. Klishin
9bd9b93fa1 Initial set of tests for atomic modifiers
Mostly to serve as examples but also to see where we may be beneficial
for Monger to offer special support for some of them.
2011-10-30 17:41:11 +04:00
Michael S. Klishin
746d83459e Rename function that sets *default* write concern 2011-10-18 18:11:51 +04:00
Michael S. Klishin
fbd00ee151 Use WriteConcern/SAFE by default
WriteConcern/NORMAL is ridiculously dangerous and most apps simply do not have performance
requirements to justify completely ignoring server responses.
2011-10-18 17:50:28 +04:00
Michael S. Klishin
c820d5885a Use monger.result/ok? and do not compare to `true' here 2011-10-16 18:19:26 +04:00
Oleksandr Petrov
edbaec0a3b Merge branch 'master' of https://github.com/michaelklishin/monger 2011-10-16 16:04:55 +02:00
Oleksandr Petrov
410ef23b03 Adding some docs and minor tests for monger.core/command. 2011-10-16 15:39:21 +02:00
Michael S. Klishin
ddf3156c8e Load mapper function from .js resource 2011-10-16 16:02:13 +04:00
Michael S. Klishin
4336b6f414 Introduce monger.js/load-resource, a helper that loads JS files from the classpath
Yes, to be used with map/reduce and so on.
2011-10-16 15:54:53 +04:00
Michael S. Klishin
4be37a4f67 Formatting 2011-10-16 15:54:09 +04:00
Michael S. Klishin
3963808152 Introduce monger.collection/distinct 2011-10-16 14:19:04 +04:00
Michael S. Klishin
d639fab9cf Two more reflection warnings 2011-10-15 04:17:59 +04:00
Michael S. Klishin
946348a8d9 Nuke a couple of reflection warnings 2011-10-15 04:16:02 +04:00
Michael S. Klishin
c62c433559 Initial map/reduce support 2011-10-14 22:18:35 +04:00
Michael S. Klishin
7d79866eff To serialize joda.time.DateTime to JSON, use ISO date time format 2011-10-14 01:01:40 +04:00
Michael S. Klishin
a7264122e3 Use clojure.test/are and namespace aliases 2011-10-11 21:04:21 +04:00
Michael S. Klishin
c48c87fd2f Skip 1M documents test, it requires JVM parameters tweaking (-Xmx) for most people 2011-10-11 20:59:42 +04:00
Oleksandr Petrov
75d52331bf Adding some docs and tests to collection. 2011-10-11 18:55:40 +02:00
Michael S. Klishin
886a270bf9 Introduce monger.collection/find-seq
For cases when you do not want to work with DBCursors but also
do not need conversion to maps that monger.collection/find-maps does.
2011-10-08 12:08:26 +04:00
Michael S. Klishin
db6721ddab Brush up conversion tests 2011-10-08 04:46:49 +04:00
Michael S. Klishin
4999891e59 Alias monger.collection that we use very heavily in monger.test.collection 2011-10-08 04:44:13 +04:00
Michael S. Klishin
59da9db80d Improve this test 2011-10-08 04:42:10 +04:00
Michael S. Klishin
69d7abb747 Ditto 2011-10-08 04:39:18 +04:00
Michael S. Klishin
d05b5bec8c Demonstrate iteration over DBCursors with iterator-seq 2011-10-08 03:01:04 +04:00
Michael S. Klishin
625db17646 A few basic batch insert stress tests 2011-10-08 02:29:16 +04:00
Michael S. Klishin
c5850bd59f Get rid of monger.util/with-ns
It was an awful hack, now replaced by a less awful one.
2011-09-19 12:31:29 +04:00
Michael S. Klishin
5e12f9aec2 Introduce monger.core/connect! and monger.core/set-db!
Even though it is not idiomatic Clojure to mutate vars like this,
it is very common for many applications to only use one MongoDB
connection (so, no per-thread var rebinding) and one main database.

For those cases, these function eliminate the need for mundaine
hacks with namespace switching.
2011-09-19 12:14:48 +04:00
Michael S. Klishin
a6d96da5bd Another attemp to make CI pass 2011-09-14 14:50:55 +04:00
Michael S. Klishin
416cb5b315 Lets see if this is what causes CI to fail 2011-09-14 14:47:42 +04:00
Michael S. Klishin
5145f45afa Make sure our test suite uses both ObjectId instances as well as string ids 2011-09-14 14:04:34 +04:00
Michael S. Klishin
7227bd6436 Add one more test that demonstrates monger.collection/update behavior with the $set operator 2011-09-12 14:49:28 +04:00
Michael S. Klishin
57d8e62058 monger.util/get-id now can also handle Clojure maps, using both :_id and "_id" as id keys 2011-09-11 23:16:36 +04:00
Michael S. Klishin
6d12e34465 monger.convertion => monger.conversion 2011-09-11 23:02:46 +04:00
Oleksandr Petrov
5a94424402 Adding monger.utils/get-id protocol extension for DBObject. 2011-09-11 16:13:14 +02:00
Oleksandr Petrov
2f82ac2bb6 Adding purge-collection function, refactoring purge-*-collection methods. 2011-09-11 12:48:42 +02:00
Michael S. Klishin
fadf939cd5 Implement monger.collection/rename 2011-09-10 08:46:17 +04:00
Michael S. Klishin
e681bf1a1c Implement monger.core/command 2011-09-10 08:46:10 +04:00
Michael S. Klishin
1f091ab735 Implement monger.collection/create 2011-09-10 08:19:19 +04:00
Michael S. Klishin
24b2dbe516 Implement monger.collection/exists? and monger.collection/drop 2011-09-10 08:09:32 +04:00
Michael S. Klishin
b90834fdc5 Implement index operations 2011-09-10 07:45:47 +04:00
Michael S. Klishin
2ab84f2593 Reformat 2011-09-09 06:59:34 +04:00
Michael S. Klishin
4700213bd5 Introduce monger.collection/find-maps 2011-09-03 18:31:26 +04:00
Michael S. Klishin
d4603c2be6 Reduce amount of duplication in tests 2011-09-03 01:09:54 +04:00
Michael S. Klishin
a670b31462 Introduce monger.collection/find-map-by-id 2011-09-03 01:02:46 +04:00
Michael S. Klishin
7e29ff457d Introduce monger.collection/find-one-as-map 2011-09-02 04:08:31 +04:00
Michael S. Klishin
f8845111f2 Make monger.collection/find-one return a DBObject, not a cursor 2011-09-02 03:28:40 +04:00
Michael S. Klishin
adfa422a51 Add a test that harnesses monger.collection/save with new DBObjects (useful for obtaining of the generated _id) 2011-09-02 03:19:35 +04:00
Michael S. Klishin
be1355b5b9 Add specialized identity convertion of DBObjects, makes it very easy to insert an object and immediately fetch its _id from it 2011-09-02 03:10:18 +04:00
Michael S. Klishin
e5e04f8d51 Add test for monger.result/updated-existing? with WriteResult 2011-09-02 01:46:02 +04:00
Michael S. Klishin
c688bfa45b Formatting 2011-09-02 01:38:49 +04:00
Michael S. Klishin
2ff340ab08 Implement monger.result.MongoCommandResult/updated-existing? 2011-09-01 22:29:46 +04:00
Michael S. Klishin
8fdfe32ccb monger.errors => monger.result, extend MongoCommandResult protocol with has-error? 2011-09-01 22:16:29 +04:00
Michael S. Klishin
e5d5b0b248 Add test for upserting a document using monger.collection/update 2011-08-31 16:48:57 +04:00
Michael S. Klishin
837ab83317 Two more cases for insert-batch 2011-08-29 20:54:36 +04:00
Michael S. Klishin
5473ff10ba Refactor to use monger.collection/insert-batch here 2011-08-29 20:53:30 +04:00
Michael S. Klishin
436cc4a00f Use at least one document with date in the test suite 2011-08-29 20:51:11 +04:00
Michael S. Klishin
1ee5436841 Initial implementation of monger.collection/find-one 2011-08-29 19:36:11 +04:00
Michael S. Klishin
e9adae10c6 Eliminate some reflection warnings in tests 2011-08-29 14:02:15 +04:00
Michael S. Klishin
861be36c54 Implement monger.collection/save 2011-08-16 11:36:52 +04:00
Michael S. Klishin
e896a5dfc3 No need to use monger.core here 2011-08-16 09:27:30 +04:00
Michael S. Klishin
79e3f8ad20 Implement monger.collection/update 2011-08-16 01:36:06 +04:00
Michael S. Klishin
b3d82ce3a2 Add monger.collection/count version that takes conditions argument 2011-08-16 00:06:40 +04:00
Michael S. Klishin
8bd4378f93 Introduce monger.core/Countable protocol 2011-08-15 01:43:02 +04:00
Michael S. Klishin
1bba60418e Use random-uuid here 2011-08-15 01:38:11 +04:00
Michael S. Klishin
f096c032cd Implement fetching of partial documents 2011-08-15 01:09:25 +04:00
Michael S. Klishin
14a0aa515c Additional tests for monger.collection/remove 2011-08-14 22:58:31 +04:00
Michael S. Klishin
90daa7c967 Implement partial document fetching for monger.collection/find-by-id 2011-08-14 22:36:54 +04:00
Michael S. Klishin
2620263103 Switch to *mongodb-connection* and *mongodb-database* instead of explicitly passing values around 2011-08-14 22:19:44 +04:00
Michael S. Klishin
11ad2168ed Initial bits of monger.collection/find and monger.collection/find-by-id 2011-08-14 08:03:29 +04:00
Michael S. Klishin
3bf2284611 Initial implementation of inserts with write concerns and batch inserts 2011-08-14 06:51:14 +04:00
Michael S. Klishin
97f537d176 Apparently MongoDB returns "ok" as 1.0 2011-08-14 05:15:46 +04:00
Michael S. Klishin
a073d7ed20 Introduce monger.errors.ok? 2011-08-14 03:56:31 +04:00
Michael S. Klishin
bef972d1ab Wrapping up with monger.convertion.ConvertFromDBObject 2011-08-14 02:15:38 +04:00
Michael S. Klishin
3a431bf1e0 Implement most of monger.convertion.ConvertFromDBObject 2011-08-13 21:18:21 +04:00
Michael S. Klishin
b38b357f50 Support java.util.List convertion 2011-08-13 07:36:44 +04:00
Michael S. Klishin
bc8fccf429 Further work on monger.convertion protocols 2011-08-13 07:30:54 +04:00
Michael S. Klishin
6c0eb8f1e0 Initial monger.convertion.* protocols work 2011-08-12 21:48:08 +04:00
Michael S. Klishin
8ee5b8f717 Introduce monger.collection/count 2011-08-04 18:06:13 +04:00
Michael S. Klishin
1299aecb3a Implement monger.core/connect and monger.core/get-db 2011-08-04 17:44:31 +04:00
Michael S. Klishin
c70074a3ed Initial Leiningen project structure 2011-08-04 16:01:50 +04:00