<?php

namespace Lucent\Commands;

use Illuminate\Console\Command;
use Lucent\Primitive\Collection;
use Lucent\Schema\FilesSchema;

class GenerateFileSchema extends Command
{

    protected $signature = 'lucent:make:file-schema {name}';

    protected $description = 'Generate a lucent file schema';


    public function handle()
    {
        $name = $this->argument('name');
        $schema = new FilesSchema(
            name: $name,
            label: $name,
            fields: Collection::make(),
            disk: "lucent",
            path: $name,
            groups: [],
            folder: "",
        );

        $json = json_encode($schema, JSON_PRETTY_PRINT);
        $configDir = base_path(config('lucent.schemas_path'));

        if(!file_exists($configDir)) {
            $this->error("Your config directory \"$configDir\"  doesn't exist. Create it first and run again");
            return;
        }

        $schemaPath = $configDir . "/" . $name . '.json';


        if (file_exists($schemaPath)) {
            $this->error("The schema file already exists.");
            return 0;
        }

        file_put_contents($schemaPath, $json);
        $this->info("The schema file has been created.");

    }

}
