<?php


namespace Module\Vendor\Command;

use Illuminate\Console\Command;
use ModStart\Core\Dao\ModelUtil;

abstract class BaseDumpDemoDataCommand extends Command
{
    protected $signature = 'dump-demo-data';

    protected function buildInsert()
    {
        $inserts = [];
        $tables = func_get_args();
        foreach ($tables as $table) {
            if (is_array($table)) {
                $inserts[$table[0]] = ModelUtil::all($table[0], [], $table[1]);
                $ignoreCallback = isset($table[2]) ? $table[2] : null;
                if ($ignoreCallback) {
                    $inserts[$table[0]] = array_filter($inserts[$table[0]], $ignoreCallback);
                }
            } else {
                $inserts[$table] = ModelUtil::all($table);
            }
        }
        return $inserts;
    }

    protected function buildUpdate()
    {
        $args = func_get_args();
        $updates = [];
        foreach ($args as $arg) {
            $updates[] = [
                'table' => $arg[0],
                'where' => $arg[1],
                'update' => ModelUtil::get($arg[0], $arg[1], $arg[2]),
            ];
        }
        return $updates;
    }

    protected function buildDump($data)
    {
        $data['time'] = date('Y-m-d H:i:s');
        @mkdir(public_path('data_demo'));
        file_put_contents($file = public_path('data_demo/data.php'), '<' . '?php return ' . var_export($data, true) . ';');
        $this->info("dump success -> $file");
    }

    abstract public function handle();
}
