示例#1
0
文件: cormo_main.cpp 项目: or/cormo
int main(int argc, char *argv[]) {
  cormo::Database db(cormo::Backend::kPostgresql,
                     "host=localhost;"
                       "user=cormo_user;"
                       "password=cormo_password;"
                       "database=cormo_test");
  db.set_debug(true);

  cormo::Error error = db.Connect();
  if (error.occurred()) {
    fprintf(stderr, "Error: %s\n", error.message().c_str());
    return 1;
  }

  DataSource<Test1> test = Select<Test1>(&db).
                                Filter(Test1::Some_int < 0).OrderBy(Test1::Id);
  vector<Test1> objs;
  test.GetAll(&objs);
  for (size_t i = 0; i < objs.size(); ++i) {
    printf("name: ");
    if (objs[i].name().is_null()) {
      printf("NULL\n");
    } else {
      printf("'%s'\n", objs[i].name().get().c_str());
    }

    printf("xyz: ");
    if (objs[i].xyz().is_null()) {
      printf("NULL\n");
    } else {
      printf("'%s'\n", objs[i].xyz().get() ? "true" : "false");
    }

    printf("some_int: ");
    if (objs[i].some_int().is_null()) {
      printf("NULL\n");
    } else {
      printf("'%d'\n", objs[i].some_int().get());
    }

    printf("test2: ");
    if (objs[i].test2().is_null()) {
      printf("NULL\n");
    } else {
      printf("'%s'\n", objs[i].test2().get().name().get().c_str());
    }
    printf("\n");
  }

  if (!objs.size()) {
    printf("none found... adding one.\n");
    Test1 stuff(&db);
    stuff.set_xyz(true);
    objs.push_back(stuff);
  }

  Test1 new_obj(&db);
  new_obj.set_name("Cool.");
  new_obj.set_some_int(-1);
  new_obj.set_some_int(2 * -new_obj.some_int());
  new_obj.some_int()++;
  ++new_obj.some_int();
  error = new_obj.Save();
  new_obj.some_int() -= 2 * new_obj.id();
  new_obj.set_xyz(objs[0].xyz());
  error = new_obj.Save();
  if (error.occurred()) {
    fprintf(stderr, "Error: %s\n", error.message().c_str());
    return 1;
  }
  printf("saved object's id: %d\n", new_obj.id().get());
  objs[0].set_name(objs[0].name() + "_");
  error = objs[0].Save();
  if (error.occurred()) {
    fprintf(stderr, "Error: %s\n", error.message().c_str());
    return 1;
  }

  if (objs.size() > 1) {
    error = objs[1].Delete();
    if (error.occurred()) {
      fprintf(stderr, "Error: %s\n", error.message().c_str());
      return 1;
    }
    Test2 new_obj2(&db);
    new_obj2.set_name("FIRLEFANZ!");
    objs[1].set_test2(new_obj2);
    error = objs[1].Save();
    if (error.occurred()) {
      fprintf(stderr, "Error: %s\n", error.message().c_str());
      return 1;
    }
  }

  return 0;
}