67 lines
1.7 KiB
Cheetah
67 lines
1.7 KiB
Cheetah
package app
|
|
|
|
import (
|
|
"context"
|
|
|
|
"{{.Modules.logger.Import}}"
|
|
)
|
|
|
|
{{.Modules.env.Struct}}
|
|
|
|
func Run(ctx context.Context, config Config, logger {{.Modules.logger.Type}}) error {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
logger.Error("Recovered from a panic", zap.Any("error", r))
|
|
}
|
|
}()
|
|
|
|
{{.Modules.logger.Message "info" "App started" "config" "config"}}
|
|
|
|
ctx, cancel := context.WithCancel(ctx)
|
|
defer cancel()
|
|
|
|
// Инициализация репозиториев
|
|
{{range $key, $value := .LayersData.Repositories}}
|
|
{{$key}}Repository := {{$value.PackageName}}.New{{$value.Name}}Repository()
|
|
{{end}}
|
|
|
|
// Инициализация сервисов
|
|
{{range $key, $value := .LayersData.Services}}
|
|
{{$key}}Service := {{$value.PackageName}}.New{{$value.Name}}Service({{$key}}Repository)
|
|
{{end}}
|
|
|
|
// Инициализация контроллеров
|
|
{{range $key, $value := .LayersData.Controllers}}
|
|
{{$key}}Controller := {{$value.PackageName}}.New{{$value.Name}}Controller({{$key}}Service)
|
|
{{end}}
|
|
|
|
// Создание сервера
|
|
server := {{.LayersData.ServerData}}.NewServer({{.LayersData.ServerData}}.ServerConfig{
|
|
Controllers: []{{.LayersData.ServerData}}.Controller{
|
|
{{range $key, $value := .LayersData.Controllers}}
|
|
{{$key}}Controller,
|
|
{{end}}
|
|
},
|
|
})
|
|
|
|
go func() {
|
|
err := server.Start("Host + : + Port")
|
|
if err != nil {
|
|
logger.Error("Server startup error", zap.Error(err))
|
|
cancel()
|
|
}
|
|
}()
|
|
|
|
// Вывод маршрутов
|
|
server.ListRoutes()
|
|
|
|
<-ctx.Done()
|
|
|
|
logger.Info("App shutting down gracefully")
|
|
|
|
//TODO
|
|
// Остановка сервера
|
|
|
|
|
|
return nil
|
|
} |