I have a custom API endpoint that we use to send a large number of records at a time. The endpoint works for updating records and inserting new records without a pre-created UUID, but when we send records with a pre-created UUID, we get the UUID back as a response, but the record is not written into the database.
To answer the questions this is going to cause, we do not use the bulk API endpoint due to a performance issue, since it is a http request to make multiple http requests. Also, we are a SugarCloud client so there is a 20 requests a minute limit, which is easy to violate.
Does anyone have any insight as to why SugarBean might have an issue with new records with pre-created UUIDs?
Here is the code for the custom endpoint.
public function setEntriesMethod($api, $args)
{
if (empty($args)) {
return false;
}
$results = array();
foreach ($args as $module => $records) {
if (is_array($records)) {
foreach ($records as $fieldsArray) {
$sugarBean = $this->_processEntry($module, $fieldsArray);
$results[$module][] = $sugarBean->id;
}
}
}
return $results;
}
private function _processEntry($module, $fieldsArray)
{
$Logger = Factory::getLogger('default');
if (array_key_exists('id', $fieldsArray)) {
$sugarBean = BeanFactory::retrieveBean($module, $fieldsArray['id']);
if (is_null($sugarBean)) {
$Logger->debug('Record ' . $fieldsArray['id'] . ' does not exist');
$sugarBean = BeanFactory::newBean($module);
}else{
$Logger->debug('Record ' . $fieldsArray['id'] . ' does exist');
}
} else {
$sugarBean = BeanFactory::newBean($module);
}
if (is_null($sugarBean)) {
return null;
}
foreach ($fieldsArray as $field => $data) {
$sugarBean->$field = $data;
}
$sugarBean->save();
return $sugarBean;
}