示例#1
0
void test_o_database_new_open_crud_close()
{
	struct o_database_error_handler *errorHandler = o_database_error_handler_new(o_db_error_handler_function, 0);
	struct o_database * db = o_database_new_error_handler("remote:127.0.0.1/demo", errorHandler);
	o_database_open(db, "admin", "admin");
	struct o_record * record = o_database_record_new(db);
	int size = strlen("content content");
	o_record_raw_reset(record, "content content", size);
	struct o_record_id *id;
	o_database_save(db, record ,&id);
	struct o_record * load_rec = o_database_load(db, id);

	int load_size;
	char * content = o_record_raw_content(load_rec, &load_size);
	assert_true(size == load_size, "readed have not same size of writed");
	assert_true(memcmp(content, "content content", load_size) == 0, "readed have not same content of writed");

	int test_size = strlen("test test");
	o_record_raw_reset(load_rec, "test test", test_size);
	o_database_save(db, load_rec, 0);
	struct o_record * load_rec2 = o_database_load(db, id);

	content = o_record_raw_content(load_rec2, &load_size);
	assert_true(test_size == load_size, "readed have not same size of writed");
	assert_true(memcmp(content, "test test", load_size) == 0, "readed have not same content of writed");

	o_database_delete(db, load_rec2);

	o_record_release(record);
	o_record_release(load_rec);
	o_record_release(load_rec2);
	o_database_close(db);
	o_database_free(db);
}
示例#2
0
struct o_document * o_database_document_load(struct o_database_document * db, struct o_record_id * id)
{
    struct o_record * record = o_database_load(o_database_document_to_database(db), id);
    if (o_record_type(record) != DOCUMENT_RECORD_TYPE)
    {
        //TODO:notify error.
        return 0;
    }
    return (struct o_document *) record;
}
示例#3
0
struct o_record * o_database_metadata(struct o_database * db)
{
	o_database_context_database_init(db);
	struct o_record * metadata = 0;
	try
	{
		struct o_record_id * rid = o_storage_get_metadata_rid(db->storage);
		metadata = o_database_load(db, rid);
		o_record_id_release(rid);
	}
	catch( struct o_exception, ex)
	{
		DB_ERROR_NOTIFY(db, o_exception_code(ex), o_exception_message(ex));
		o_exception_free(ex);
	}
	end_try;
	o_database_context_database_init(0);
	return metadata;
}