ВНЕШНИЙ ИНТЕРФЕЙС
Nuxt3
TailwindCSS 5
Typescript
портфолио |Αα
Каждый день в полночь база данных 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 моего портфолио, обеспечивая при этом безопасность данных и минимизируя запросы к первоначальным поставщикам за счет использования кэшированных данных.