Laravel Ingest: Product Importer

Submitted by zappzerapp - 10 hours ago

A robust, configuration-driven ETL and data import framework for Laravel. Handles CSV/Excel streaming, queues, validation, and relationships.

# Details: https://github.com/zappzerapp/laravel-ingest

<?php

namespace App\Ingest;

use App\Models\Product;
use LaravelIngest\Contracts\IngestDefinition;
use LaravelIngest\Enums\DuplicateStrategy;
use LaravelIngest\Enums\SourceType;
use LaravelIngest\IngestConfig;

class ProductImporter implements IngestDefinition
{
    public function getConfig(): IngestConfig
    {
        return IngestConfig::for(Product::class)
            ->fromSource(SourceType::FILESYSTEM, [
                'disk' => 'local',
                'path' => 'csv/',
            ])
            ->keyedBy('SKU')
            ->onDuplicate(DuplicateStrategy::UPDATE)
            ->setChunkSize(500)
            ->map('SKU', 'sku')
            ->map('Name', 'name')
            ->map('Description', 'description')
            ->map('Price', 'price')
            ->map('Category', 'category')
            ->map('Stock', 'stock');
    }
}