<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Carbon\Carbon;

class ExportV2Log extends Command
{
    protected $signature = 'log:export {days=1 : The number of days to export logs for}';
    protected $description = 'Export v2_log table records of the specified number of days to a file';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $days = $this->argument('days');
        $date = Carbon::now()->subDays($days)->startOfDay();

        $logs = \DB::table('v2_log')
                    ->where('created_at', '>=', $date->timestamp)
                    ->get();

        $fileName = "v2_logs_" . Carbon::now()->format('Y_m_d_His') . ".csv";
        $handle = fopen(storage_path("logs/$fileName"), 'w');

        // 根据您的表结构
        fputcsv($handle, ['Level', 'ID', 'Title', 'Host', 'URI', 'Method', 'Data', 'IP', 'Context', 'Created At', 'Updated At']);

        foreach ($logs as $log) {
            fputcsv($handle, [
                $log->level,
                $log->id,
                $log->title, 
                $log->host, 
                $log->uri, 
                $log->method, 
                $log->data, 
                $log->ip, 
                $log->context, 
                Carbon::createFromTimestamp($log->created_at)->toDateTimeString(), 
                Carbon::createFromTimestamp($log->updated_at)->toDateTimeString()
            ]);
        }

        fclose($handle);
        $this->info("Logs exported to $fileName");
    }
}