Search by

rkov / template-import-export

Rkov

Template import/export library

Package info

github.com/CrazyYakov/template-import-export

pkg:composer/rkov/template-import-export

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.1.0 2026-07-23 10:46 UTC

This package is not auto-updated.

Last update: 2026-10-07 08:03:32 UTC


README

This is templator business logic package for import/export data.

Installation

To install this package you can use composer:

composer require rkov/template-import-export

Usage Import

First, you need to configure import:

1. Config

use Rkov\TemplateImportExport\Factories\ConfigFactory;
use Rkov\TemplateImportExport\Aggregates\FieldList;
use Rkov\TemplateImportExport\Fields\IdFiled;
use Rkov\TemplateImportExport\Fields\NumberField;
use Rkov\TemplateImportExport\Fields\StringField;

class UserConfig extends ConfigFactory
{
    public function fieldList(): FieldList
    {
        return new FieldList(
            IdFiled::make(),

            StringField::make('name', 'Name'),

            NumberField::make('age', 'Age'),
        );
    }

    public function insertRow(array|object $row): string|int
    {
        $user = User::create([
            'name' => $row['name'],
            'age' => $row['age'],
        ]);

        return $user->id;
    }

    public function updateRow(array|object $row): string|int
    {
        $user = User::find($row['id']);

        $user->update([
            'name' => $row['name'],
            'age' => $row['age'],
        ]);

        return $user->id;
    }
}

2. Parse data from source

After, you need to parse data from source (database or file):

class UserJsonData implements ParseDataInterface
{
    public function __construct(
        private string $file
    ){}

    public function getRawData(): RawDataAggregate
    {
        return new RawData(function () {
            $data = file_get_contents($this->file);

            yeild from json_decode($data, true);
        });
    }
}

3. Run

Now, run import in your project like this:

use Rkov\TemplateImportExport\DataExchange;

$config = new UserConfig();

$importService = DataExchange::make()->import($config);

$userData = new UserJsonData('path/to/file.json');

$importData = $importService->import($userData);

// the import start
foreach($importData->ids as $keyRow => $id) {
    // do something with $id
}

// after import 
foreach($importData->errors as $keyRow => $errorMessages) {
    foreach($errorMessages as $errorMessage) {
        // do something with $errorMessage

        $message = (string) $errorMessage;
        $key = $errorMessage->getKey();
        $title = $errorMessage->getTitle();
    }
}

License

Copyright (c) Rochev Yakov. Distributed under the MIT.