<?php

declare(strict_types=1);

if (PHP_SAPI !== 'cli') {
    fwrite(STDERR, "Bu betik yalnızca CLI ile çalışır.\n");
    exit(1);
}

require_once dirname(__DIR__) . '/api/db.php';

$dbPath = mocker_db_path();
$dataDir = dirname($dbPath);
$skipDemoPath = $dataDir . DIRECTORY_SEPARATOR . '.skip_demo_user';

$allowDemoLater = in_array('--allow-demo-later', $argv ?? [], true);

if (!is_file($dbPath)) {
    fwrite(STDERR, "Veritabanı bulunamadı: {$dbPath}\n");
    exit(1);
}

$pdo = new PDO('sqlite:' . $dbPath, null, null, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$pdo->exec('PRAGMA foreign_keys = ON');

$pdo->beginTransaction();
try {

    $pdo->exec('DELETE FROM telegram_bot_subscribers');
    $pdo->exec('DELETE FROM users');
    $pdo->commit();
} catch (Throwable $e) {
    $pdo->rollBack();
    fwrite(STDERR, 'Hata: ' . $e->getMessage() . "\n");
    exit(1);
}

if (!is_dir($dataDir)) {
    fwrite(STDERR, "data klasörü yok.\n");
    exit(1);
}

if (!$allowDemoLater) {
    touch($skipDemoPath);
    echo "Not: Demo hesap (testuser) bir daha eklenmesin diye oluşturuldu: {$skipDemoPath}\n";
    echo "     Yerelde demo isterseniz bu dosyayı silin.\n";
} elseif (is_file($skipDemoPath)) {
    @unlink($skipDemoPath);
    echo "Not: {$skipDemoPath} kaldırıldı — sonraki API isteğinde testuser gerekiyorsa oluşturulabilir.\n";
}

echo "Tamamlandı: tüm üye satırları ve bağlı kullanıcı verisi silindi.\n";
