Якщо ви коли-небудь запускали міграцію, що зламала локальну SQLite-базу, або seeder, який стер ретельно підготовлені тестові дані, і хотіли б повернутися точно до початкового стану — Tyro Checkpoint створено саме для цього. Створений Hasin Hayder, цей пакет тільки для розробки під Laravel дозволяє робити іменовані знімки вашої SQLite-бази й відновлювати їх миттєво, без повторного запуску міграцій чи seeder-ів.
Tyro Checkpoint зберігає повні копії файлу SQLite поза самою базою. Метадані (імена, мітки часу, нотатки, статус блокування) фіксуються у файлі checkpoints.json, тож відновлення знімка не стирає історію контрольних точок. Уявіть собі це як Git-коміти для стану вашої локальної бази.
# Встановлення
composer require hasinhayder/tyro-checkpoint --dev
php artisan tyro-checkpoint:install
Команда встановлення перевіряє конфігурацію бази й створює директорію storage/tyro-checkpoints/, куди зберігаються знімки.
# Створення й відновлення контрольних точок
Створити точку — одна команда:
php artisan tyro-checkpoint:create [snapshot_name]
Щоб переглянути всі знімки:
php artisan tyro-checkpoint:list
Коли потрібно відкотитися:
php artisan tyro-checkpoint:restore [snapshot_name]
Можна відновлювати за іменем або за ID. Знімки лишаються доступними, тож їх можна відновлювати багаторазово під час тестування без повторного створення.
# Керування контрольними точками
Пакет має кілька команд для організації контрольних точок:
| Команда | Опис |
|---|---|
tyro-checkpoint:add-note [id] |
Додати нотатку до контрольної точки |
tyro-checkpoint:lock [id] |
Захистити точку від видалення |
tyro-checkpoint:unlock [id] |
Зняти захист |
tyro-checkpoint:delete [id] |
Видалити конкретну точку |
tyro-checkpoint:flush |
Видалити всі незаблоковані точки одразу |
Блокування корисне для збереження чистої бази — заблокуйте точку, і tyro-checkpoint:flush її не зачепить.
# Опційне шифрування
Для робочих процесів із даними, наближеними до продакшену, пакет підтримує AES-256 шифрування файлів. Спочатку згенеруйте ключ:
php artisan tyro-checkpoint:generate-key
Додайте ключ у файл .env як TYRO_CHECKPOINT_ENCRYPTION_KEY, і нові знімки шифруватимуться автоматично.
Примітка: якщо ви втратите або зміните ключ шифрування, знімки, створені з попереднім ключем, стануть недоступними.
# Налаштування
Щоб змінити шлях збереження, опублікуйте файл конфігурації:
php artisan tyro-checkpoint:publish-config
Це створить config/tyro-checkpoint.php, де можна вказати директорію для знімків і налаштувати шифрування.
# Кілька зауважень
Кожна контрольна точка — повна копія файлу бази, тож використання диску зростає з кожним знімком. Команда flush допомагає прибирати, але заблоковані точки потрібно видаляти вручну. Це не інструмент для продакшен-резервного копіювання — лише зручність для локальної розробки.
Код доступний на hasinhayder/tyro-checkpoint на GitHub, а повну документацію читайте на сайті проєкту.