summaryrefslogtreecommitdiff
path: root/docs/tutorial/examples/tut_mongo_sync_cmd_index_create.c
blob: 0e2f0b58174bc1b4dd95ee0616cc3aec05f56be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <mongo.h>

#include <errno.h>
#include <stdio.h>

static void
create_and_verify_index(mongo_sync_connection *conn,
                        bson *index)
{
  if (!mongo_sync_cmd_index_create (conn, "lmc.indexed", index,
                                    MONGO_INDEX_UNIQUE | MONGO_INDEX_DROP_DUPS |
                                    MONGO_INDEX_SPARSE))
    {
      gchar *error = NULL;
      int e = errno;

      mongo_sync_cmd_get_last_error (conn, "lmc.indexed", &error);
      fprintf (stderr, "Can't create indexes: %s\n", error ? error : strerror (e));
      g_free (error);
    }
  else
    printf ("Index successfully created!\n");
}

int
main (void)
{
  mongo_sync_connection *conn;
  bson *invalid_index, *index;

  invalid_index = bson_build (BSON_TYPE_STRING, "name", "", -1,
                              BSON_TYPE_NONE);
  bson_finish (invalid_index);

  index = bson_build (BSON_TYPE_INT32, "name", 1,
                      BSON_TYPE_NONE);
  bson_finish (index);

  conn = mongo_sync_connect ("localhost", 27017, FALSE);
  if (!conn)
    {
      fprintf (stderr, "Connection failed: %s\n", strerror (errno));
      return 1;
    }

  create_and_verify_index (conn, invalid_index);
  create_and_verify_index (conn, index);

  bson_free (invalid_index);
  bson_free (index);
  mongo_sync_disconnect (conn);

  return 0;
}