Feature: Creating Skeleton for import command, interfaces, shopify importer
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Core\Command;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Modules\Core\MigrateImport\ImportSpec;
|
||||
use Modules\Core\MigrateImport\RunMigrateImportJob;
|
||||
|
||||
class MigrateImportCommand extends Command
|
||||
{
|
||||
protected $signature = "boboko:migrate:import
|
||||
{--source= : The source platform to import from}
|
||||
{--type= : The import mechanism for the chosen source}
|
||||
{--file= : Path to the export file (when type is export)}";
|
||||
|
||||
protected $description = "Migrate data (products, customers, etc.) from an external source";
|
||||
|
||||
// Supported sources. Only "shopify" is wired up for now.
|
||||
private const SOURCES = [
|
||||
"shopify",
|
||||
// "woocommerce",
|
||||
];
|
||||
|
||||
// Supported import types per source. Only "export" is wired up for now.
|
||||
private const TYPES = [
|
||||
"export",
|
||||
// "api",
|
||||
];
|
||||
|
||||
public function handle(): void
|
||||
{
|
||||
$source = $this->option("source")
|
||||
?? $this->choice("Select a source:", self::SOURCES, 0);
|
||||
|
||||
$type = $this->option("type")
|
||||
?? $this->choice("Select an import type:", self::TYPES, 0);
|
||||
|
||||
if ($type === "api") {
|
||||
$credentials = [
|
||||
"api_key" => $this->secret("API key:"),
|
||||
"api_secret" => $this->secret("API secret:"),
|
||||
];
|
||||
$filePath = null;
|
||||
} else {
|
||||
$filePath = $this->option("file")
|
||||
?? $this->ask("Path to the export file:");
|
||||
$credentials = null;
|
||||
}
|
||||
|
||||
$spec = new ImportSpec(
|
||||
source: $source,
|
||||
type: $type,
|
||||
filePath: $filePath,
|
||||
credentials: $credentials,
|
||||
);
|
||||
|
||||
RunMigrateImportJob::dispatch($spec);
|
||||
|
||||
$this->info("Import queued.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user