<?php
// phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols

/* The torrents_logs.Log column no longer exists as of this commit.
 * This script is left for historical purposes and for people who
 * want to migrate an existing Gazelle installation.
 * Similarly, the Gazelle\File\RipLog::pathLegacy() method no
 * longer exists.
 */

namespace Gazelle;

require __DIR__ . '/../../lib/bootstrap.php';

ini_set('max_execution_time', -1);

define('CHUNK', 100);

$offset    = 0;
$last      = 0;
$processed = 0;
$newLog    = 0;
$errLog    = 0;
$newHtml   = 0;
$errHtml   = 0;

$db = DB::DB();

while (true) {
    $db->prepared_query('
        SELECT LogID, TorrentID, Log
        FROM torrents_logs
        WHERE LogID > ?
        ORDER BY LogID
        LIMIT ?
        ', $offset, CHUNK
    );
    if (!$db->has_results()) {
        break;
    }

    while (list($logId, $torrentId, $log) = $db->next_record(MYSQLI_NUM)) {
        $last = $logId;
        ++$processed;
        if (file_exists($logFiler->pathLegacy([$torrentId, $logId])) && !file_exists($logFiler->path([$torrentId, $logId]))) { /** @phpstan-ignore-line */
            if (!copy($logFiler->pathLegacy([$torrentId, $logId]), $logFiler->path([$torrentId, $logId]))) { /** @phpstan-ignore-line */
                ++$errLog;
            }
            ++$newLog;
        }
        if (!file_exists($htmlFiler->path([$torrentId, $logId]))) {
            if (!new RipLog($torrentId, $logId)->put($log)) {
                ++$errHtml;
            }
            new RipLogHTML($torrentId, $logId)->put("$log\n");
            ++$newHtml;
        }
    }

    printf("begin %7d end %7d processed %7d / log %7d error %7d / html %7d error %7d\n",
        $offset, $last, $processed, $newLog, $errLog, $newHtml, $errHtml);
    $offset = $last;
}
