44 lines
1.3 KiB
PHP
44 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Import\Contracts;
|
|
|
|
use App\Models\Import;
|
|
|
|
interface EntityHandlerInterface
|
|
{
|
|
/**
|
|
* Process a single row for this entity.
|
|
*
|
|
* @param Import $import The import instance
|
|
* @param array $mapped Mapped data for this entity
|
|
* @param array $raw Raw row data
|
|
* @param array $context Additional context (previous entity results, etc.)
|
|
* @return array Result with action, entity instance, applied_fields, etc.
|
|
*/
|
|
public function process(Import $import, array $mapped, array $raw, array $context = []): array;
|
|
|
|
/**
|
|
* Validate mapped data before processing.
|
|
*
|
|
* @param array $mapped Mapped data for this entity
|
|
* @return array Validation result ['valid' => bool, 'errors' => array]
|
|
*/
|
|
public function validate(array $mapped): array;
|
|
|
|
/**
|
|
* Get the entity class name this handler manages.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getEntityClass(): string;
|
|
|
|
/**
|
|
* Resolve existing entity by key/reference.
|
|
*
|
|
* @param array $mapped Mapped data for this entity
|
|
* @param array $context Additional context
|
|
* @return mixed|null Existing entity instance or null
|
|
*/
|
|
public function resolve(array $mapped, array $context = []): mixed;
|
|
}
|