portfolio.rottigni.tech

ВНЕШНИЙ ИНТЕРФЕЙС

  • Nuxt@4

  • TailwindCSS@4

  • Typescript

Бэкэнд

  • SQLite3

  • Prisma

  • Nitro

Система посева

Каждый день в полночь база данных SQLite моего портфолио автоматически обновляется через специальный сервис Docker на моем VPS.

Этот сервис запускает задание cron Node.js, которое собирает и обновляет данные из различных источников, включая Vimeo, GitHub, GitLab API, веб-скрапинг puppeteers и статические источники, размещенные на https://storage.rottigni.tech/.

Обновления применяются к базе данных SQLite с помощью@prisma/clientи отражаются как в файловой системе VPS, так и в контейнере Nuxt3, которые остаются обновленными через тома Docker.

Контейнер сеялки генерирует журналы во время процесса заполнения, включая logs.log, error.log и debug.log, которые отправляются в мой частный репозиторий по адресу https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/logs/при каждом прогоне.

Контейнер также создаст резервную копию базы данных SQLite3 перед каждой начальной операцией, сохраняя ее в https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/backup/,, для обеспечения безопасности данных.

Примечательной особенностью сеялки является ее способность использовать мое личное хранилище в качестве поставщика кешированных данных.

Когда сидер запрашивает данные у поставщика-источника, он загружает в мой архив новый файл ответа JSON API, содержащий в имени файла отметку времени операции в формате UTC.

(https://s3.rottigni.tech/portfolio.rottigni.tech/seeding/history/)

Когда кеширование включено, сидер читает последний файл из архива вместо того, чтобы запрашивать данные у исходного поставщика.

Все это управляется с помощью файла seed.config.ts, расположенного в корневом каталоге заполнения.

В этом файле указывается, какие сущности и отношения должны быть заполнены, что должно быть кэшировано, и пути загрузки данных.

В целом, эта система обеспечивает автоматические обновления базы данных SQLite моего портфолио, обеспечивая при этом безопасность данных и минимизируя запросы к первоначальным поставщикам за счет использования кэшированных данных.

Сообщить об ошибке

Произошло что-то странное?

Поле "Эл. почта" является обязательным.
Поле "Проблема" является обязательным.