<?php

declare(strict_types=1);

namespace App\Console\Commands\Storage\Admin;

use App\Actions\Storage\Admin\Dump\DumpAdminAction;
use Illuminate\Console\Attributes\Description;
use Illuminate\Console\Attributes\Signature;

#[Signature(
    'db:dump-admin
    {--comments : Write additional information in the MySQL dump such as program version, server version and host}
    {--data-only : Dump only the data without the schema in PostgreSQL dump}
    {--default-character-set=utf8 : Specify default character set in MySQL dump}
    {--extended-insert : Use multiple-row insert syntax in MySQL dump}
    {--inserts : Dump data as INSERT commands rather than COPY in PostgreSQL dump}
    {--lock-tables : Lock all tables before dumping them to MySQL dump}
    {--no-create-info : Turn off CREATE TABLE statements in MySQL dump}
    {--quick : Retrieve rows for a table from the server one row at a time in MySQL dump}
    {--set-gtid-purged=AUTO : Add SET GTID_PURGED to output in MySQL dump}
    {--single-transaction=true : Issue a BEGIN SQL statement before dumping data from server for MySQL dump}
    {--skip-column-statistics : Turn off ANALYZE table statements in the MySQL dump}
    {--skip-comments : Do not write additional information in the MySQL dump}
    {--skip-extended-insert : Turn off extended-insert in MySQL dump}
    {--skip-lock-tables : Turn off locking tables before dumping to MySQL dump}
    {--skip-quick : Do not retrieve rows for a table from the server one row at a time in MySQL dump}'
)]
#[Description('Produces sanitized database dump, targeting admin-related tables for seeding purposes')]
class AdminDumpCommand extends DumpCommand
{
    protected function action(): DumpAdminAction
    {
        return new DumpAdminAction($this->options());
    }
}
