validation
This commit is contained in:
@@ -7,17 +7,25 @@ use stdClass;
|
||||
|
||||
class RecordModule
|
||||
{
|
||||
public static function updateField(
|
||||
Record $record,
|
||||
RecordField $field,
|
||||
): Record {
|
||||
$recordFields = collect($record->draftData)->filter(
|
||||
fn(RecordField $rf) => !(
|
||||
$rf->id == $field->id && $rf->locale == $field->locale
|
||||
),
|
||||
);
|
||||
$recordFields->push($field);
|
||||
$record->draftData = $recordFields->values()->toArray();
|
||||
return $record;
|
||||
}
|
||||
|
||||
public static function toDb(Record $record): array
|
||||
{
|
||||
return [
|
||||
"id" => $record->id,
|
||||
"schema_id" => $record->schemaId,
|
||||
"draft_data" => json_encode(
|
||||
array_map(static::recordFieldToDb(...), $record->draftData),
|
||||
),
|
||||
"live_data" => json_encode(
|
||||
array_map(static::recordFieldToDb(...), $record->liveData),
|
||||
),
|
||||
"created_at" => $record->createdAt->toJSON(),
|
||||
"created_by" => $record->createdBy,
|
||||
"published_at" => empty($record->publishedAt)
|
||||
@@ -33,14 +41,9 @@ class RecordModule
|
||||
|
||||
public static function fromDb(stdClass $data): Record
|
||||
{
|
||||
$draftDataArr = json_decode(data_get($data, "draft_data"), true);
|
||||
$liveDataArr = json_decode(data_get($data, "live_data"), true);
|
||||
|
||||
return new Record(
|
||||
id: data_get($data, "id"),
|
||||
schemaId: data_get($data, "schema_id"),
|
||||
draftData: array_map(static::recordFieldFromDb(...), $draftDataArr),
|
||||
liveData: array_map(static::recordFieldFromDb(...), $liveDataArr),
|
||||
createdAt: Carbon::parse(data_get($data, "created_at")),
|
||||
createdBy: data_get($data, "created_by"),
|
||||
publishedAt: empty(data_get($data, "published_at"))
|
||||
@@ -53,32 +56,4 @@ class RecordModule
|
||||
trashedBy: data_get($data, "trashed_by"),
|
||||
);
|
||||
}
|
||||
|
||||
public static function recordFieldFromDb(array $field): RecordField
|
||||
{
|
||||
return new RecordField(
|
||||
id: data_get($field, "id"),
|
||||
locale: data_get($field, "locale", []),
|
||||
value: data_get($field, "value"),
|
||||
createdAt: Carbon::parse(data_get($field, "created_at")),
|
||||
createdBy: data_get($field, "created_by"),
|
||||
updatedAt: Carbon::parse(data_get($field, "updated_at")),
|
||||
updatedBy: data_get($field, "updated_by"),
|
||||
version: data_get($field, "version"),
|
||||
);
|
||||
}
|
||||
|
||||
public static function recordFieldToDb(RecordField $field): array
|
||||
{
|
||||
return [
|
||||
"id" => $field->id,
|
||||
"locale" => $field->locale,
|
||||
"value" => $field->value,
|
||||
"created_at" => $field->createdAt->toJSON(),
|
||||
"created_by" => $field->createdBy,
|
||||
"updated_at" => $field->updatedAt->toJSON(),
|
||||
"updated_by" => $field->updatedBy,
|
||||
"version" => $field->version,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user