Entrypoint и Bootstrap
Entrypoint
Точкой входа в наше приложение является файл cmd/api/main.go.
Самые важные действия здесь происходят в 28 и 30 строке. Давай рассмотрим их. Пройдем в функцию Bootstrap() с помощью ctrl/cmd + ЛКМ. Таким образом мы перейдем к файлу run/app.go.
Bootstrap
Функция Bootstrap инициализирует приложение. Рассмотрим эту функцию поближе, так как весь процесс инициализации приложения происходит здесь.
С полной версией ты можешь ознакомиться в репозитории.
Внутри bootstrap происходит инициализация компонентов приложения, таких как провайдер электронной почты, сервис уведомлений, менеджер токенов, декодер, менеджер ответов сервера, генератор UUID, хешер, сканер таблицы и др. Затем функция создает базу данных и ее адаптер и инициализирует мигратор, который выполняет миграции таблиц в БД. Далее функция bootstrap инициализирует кеш на основе Redis и хранилища, используемые для работы с базой данных. Затем создает сервисы и контроллеры, инициализирует роутер и конфигурирует HTTP-сервер. Наконец, функция возвращает приложение.
Далее функция run стартует веб-сервер с graceful shutdown, используя context.