<?php

namespace App\Console\Commands;

use App\Support\FishSpatialSchemaInstaller;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Schema;

class InstallFishSpatialTables extends Command
{
    protected $signature = 'fish:install-spatial-tables';

    protected $description = 'PostGIS uzantısı ve fish_land_polygons vb. tabloları oluşturur (migration atlanmış ortamlar için).';

    public function handle(): int
    {
        if (Schema::getConnection()->getDriverName() !== 'pgsql') {
            $this->error('PostgreSQL bağlantısı gerekli.');

            return self::FAILURE;
        }

        FishSpatialSchemaInstaller::ensureExtension();
        if (! FishSpatialSchemaInstaller::postgisInstalled()) {
            $this->error('PostGIS PostgreSQL\'e kurulu değil veya CREATE EXTENSION başarısız.');

            return self::FAILURE;
        }

        if (FishSpatialSchemaInstaller::spatialTablesExist()) {
            $this->info('Uzamsal balık tabloları zaten mevcut.');

            return self::SUCCESS;
        }

        FishSpatialSchemaInstaller::installSpatialTables();
        $this->info('Uzamsal tablolar oluşturuldu.');

        return self::SUCCESS;
    }
}
