void test_o_record_id_managment() { struct o_record_id * id = o_record_id_new(10, 20); assert_true(o_record_id_cluster_id(id) == 10, "not the same cluster id of inserted"); assert_true(o_record_id_record_id(id) == 20, "not the same record id of inserted"); o_record_id_release(id); }
int o_database_operation_context_save(struct o_operation_context * context, struct o_record * record, char * cluster_name, struct o_record_id ** rid) { struct o_database_operation_context *db = (struct o_database_operation_context *) context; o_record_before_save(record); struct o_record_id *rec_id = o_record_get_id(record); int is_new = o_record_id_is_new(rec_id); struct o_raw_buffer * buff = o_raw_buffer_record(record); if (is_new) { if (cluster_name == 0) cluster_name = o_record_cluster_name(record); int cluster_id = o_operation_context_cluster_name_id(context, cluster_name); struct create_result * res = o_storage_create_record(db->storage, cluster_id, buff); struct o_record_id * new_rid = o_record_id_new(cluster_id, res->rid); o_record_reset_id(record, new_rid); o_record_reset_version(record, res->version); o_free(res); if (rid != 0) *rid = new_rid; } else { struct o_record_id *id = o_record_get_id(record); int new_version = o_storage_update_record(db->storage, id, buff); o_record_reset_version(record, new_version); if (rid != 0) *rid = id; } o_raw_buffer_free(buff); o_record_after_save(record); //o_record_cache_put(db->cache, record); return 1; }