Wraps getCriteria & getValues in resolveObjects.

- Avoids removing identifiers in resolveObjects (underscore)
This commit is contained in:
distinctm
2019-01-23 13:42:44 -05:00
parent cb07615168
commit 26ab964505

View File

@@ -47,10 +47,13 @@ class Updater
$records = $this->getRecords($file); $records = $this->getRecords($file);
$records->each(function($record) use ($model) { $records->each(function($record) use ($model) {
$record = $this->resolveObjects($record); $criteria = $this->resolveObjects(
$this->getCriteria($record)
);
$criteria = $this->getCriteria($record); $values = $this->resolveObjects(
$values = $this->getValues($record); $this->getValues($record)
);
$model::updateOrCreate($criteria, $values); $model::updateOrCreate($criteria, $values);
}); });
@@ -91,12 +94,12 @@ class Updater
/** /**
* Filter record criteria * Filter record criteria
* *
* @param \Illuminate\Support\Collection $record * @param object $record
* @return array * @return array
*/ */
protected function getCriteria(\Illuminate\Support\Collection $record) protected function getCriteria(object $record)
{ {
$criteria = $record->filter(function($value, $key) { $criteria = collect($record)->filter(function($value, $key) {
return $this->isCriteria($key); return $this->isCriteria($key);
}); });
@@ -106,18 +109,18 @@ class Updater
return $criteria->mapWithKeys(function($value, $key) { return $criteria->mapWithKeys(function($value, $key) {
return [substr($key, 1) => $value]; return [substr($key, 1) => $value];
})->toArray(); });
} }
/** /**
* Filter record values * Filter record values
* *
* @param \Illuminate\Support\Collection $record * @param object $record
* @return array * @return array
*/ */
protected function getValues(\Illuminate\Support\Collection $record) protected function getValues(object $record)
{ {
return $record->reject(function($value, $key) { return collect($record)->reject(function($value, $key) {
if($this->isCriteria($key)) { if($this->isCriteria($key)) {
return true; return true;
} }
@@ -127,7 +130,7 @@ class Updater
} }
return false; return false;
})->toArray(); });
} }
/** /**
@@ -178,9 +181,11 @@ class Updater
*/ */
protected function resolveId(string $key, object $values) protected function resolveId(string $key, object $values)
{ {
// $column = $this->isCriteria($key) ? substr($key, 1) : $key;
$model = $this->getModel($key); $model = $this->getModel($key);
$values = collect($values)->mapWithKeys(function($value, $column) { $values = collect($values)->mapWithKeys(function($value, $column) {
if(is_object($value)) { if(is_object($value)) {
return $this->resolveId($column, $value); return $this->resolveId($column, $value);
} }
@@ -194,18 +199,18 @@ class Updater
/** /**
* Detect nested objects and resolve them * Detect nested objects and resolve them
* *
* @param object $records * @param \Illuminate\Support\Collection $records
* @return \Illuminate\Support\Collection * @return array
*/ */
protected function resolveObjects(object $record) protected function resolveObjects(\Illuminate\Support\Collection $record)
{ {
return collect($record)->mapWithKeys(function($value, $key) { return $record->mapWithKeys(function($value, $key) {
if(is_object($value)) { if(is_object($value)) {
return $this->resolveId($key, $value); return $this->resolveId($key, $value);
} }
return [$key => $value]; return [$key => $value];
}); })->toArray();
} }
} }