Skip to content

Commit 22a5ecb

Browse files
author
Christian Hergert
committed
database: wrap mongoc_client_command() from mongoc_database_t.
1 parent c6c078d commit 22a5ecb

File tree

3 files changed

+48
-15
lines changed

3 files changed

+48
-15
lines changed

mongoc/mongoc-database.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,26 +132,23 @@ mongoc_database_destroy (mongoc_database_t *database)
132132
*/
133133

134134
mongoc_cursor_t *
135-
mongoc_database_command (mongoc_database_t *database,
136-
mongoc_query_flags_t flags,
137-
bson_uint32_t skip,
138-
bson_uint32_t n_return,
139-
const bson_t *command,
140-
const bson_t *fields,
141-
mongoc_read_prefs_t *read_prefs)
135+
mongoc_database_command (mongoc_database_t *database,
136+
mongoc_query_flags_t flags,
137+
bson_uint32_t skip,
138+
bson_uint32_t n_return,
139+
const bson_t *command,
140+
const bson_t *fields,
141+
const mongoc_read_prefs_t *read_prefs)
142142
{
143-
char ns[140];
144-
145-
bson_return_val_if_fail(database, NULL);
146-
bson_return_val_if_fail(command, NULL);
143+
BSON_ASSERT (database);
144+
BSON_ASSERT (command);
147145

148146
if (!read_prefs) {
149147
read_prefs = database->read_prefs;
150148
}
151149

152-
snprintf(ns, sizeof ns, "%s.$cmd", database->name);
153-
return _mongoc_cursor_new(database->client, ns, flags, skip, n_return, 0,
154-
TRUE, command, fields, read_prefs);
150+
return mongoc_client_command (database->client, database->name, flags, skip,
151+
n_return, command, fields, read_prefs);
155152
}
156153

157154

mongoc/mongoc-database.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ mongoc_cursor_t *mongoc_database_command (mongoc_database
4545
bson_uint32_t n_return,
4646
const bson_t *command,
4747
const bson_t *fields,
48-
mongoc_read_prefs_t *read_prefs);
48+
const mongoc_read_prefs_t *read_prefs);
4949
bson_bool_t mongoc_database_command_simple (mongoc_database_t *database,
5050
const bson_t *command,
5151
bson_error_t *error);

tests/test-mongoc-database.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,41 @@ test_has_collection (void)
5252
}
5353

5454

55+
static void
56+
test_command (void)
57+
{
58+
mongoc_database_t *database;
59+
mongoc_client_t *client;
60+
mongoc_cursor_t *cursor;
61+
const bson_t *doc;
62+
bson_bool_t r;
63+
bson_t cmd = BSON_INITIALIZER;
64+
65+
client = mongoc_client_new (gTestUri);
66+
assert (client);
67+
68+
database = mongoc_client_get_database (client, "admin");
69+
70+
bson_append_int32 (&cmd, "ping", 4, 1);
71+
72+
cursor = mongoc_database_command (database, MONGOC_QUERY_NONE, 0, 1, &cmd, NULL, NULL);
73+
assert (cursor);
74+
75+
r = mongoc_cursor_next (cursor, &doc);
76+
assert (r);
77+
assert (doc);
78+
79+
r = mongoc_cursor_next (cursor, &doc);
80+
assert (!r);
81+
assert (!doc);
82+
83+
mongoc_cursor_destroy (cursor);
84+
mongoc_database_destroy (database);
85+
mongoc_client_destroy (client);
86+
bson_destroy (&cmd);
87+
}
88+
89+
5590
static void
5691
log_handler (mongoc_log_level_t log_level,
5792
const char *domain,
@@ -73,6 +108,7 @@ main (int argc,
73108
gTestUri = bson_strdup_printf("mongodb://%s/", HOST);
74109

75110
run_test("/mongoc/database/has_collection", test_has_collection);
111+
run_test("/mongoc/database/command", test_command);
76112

77113
bson_free(gTestUri);
78114

0 commit comments

Comments
 (0)