Files
esauth-2024/cmd/release/main.go
T
2024-10-24 12:00:00 +03:00

86 lines
2.2 KiB
Go

package main
import (
"esauth"
"esauth/pkg/handler"
"esauth/pkg/handler/oauth"
"esauth/pkg/repository"
"esauth/pkg/service"
"os"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
)
func main() {
gin.SetMode(gin.ReleaseMode)
logrus.SetFormatter(new(logrus.TextFormatter))
if err := initConfig(); err != nil {
logrus.Fatalf("error occured while init config: %s", err.Error())
}
// dbViper, err := initDBConfig()
// if err != nil {
// log.Fatalf("failed to init db config: %s", err.Error())
// }
// var dbConfig repository.Config
// dbViper.Unmarshal(&dbConfig)
if err := godotenv.Load(); err != nil {
logrus.Fatalf("error loading env vars: %s", err.Error())
}
db, err := repository.NewDB(repository.Config{
Host: viper.GetString("db.host"),
Port: viper.GetString("db.port"),
Username: viper.GetString("db.username"),
DBName: viper.GetString("db.dbname"),
Password: os.Getenv("DB_PASSWORD"),
})
if err != nil {
logrus.Fatalf("failed to init database: %s", err.Error())
}
repos := repository.NewRepository(db)
services := service.NewService(repos)
handlers := handler.NewHandler(
services,
repos,
&oauth.TelegramOAuth{
BotToken: os.Getenv("TELEGRAM_BOT_TOKEN"),
BotId: viper.GetString("oauth.telegram.botId"),
Service: services,
Repo: repos,
},
&oauth.GoogleOAuth{
GoogleOauthConfig: &oauth2.Config{
RedirectURL: viper.GetString("oauth.google.redirectURL"), // URL для callback после авторизации
ClientID: viper.GetString("oauth.google.clientID"),
ClientSecret: os.Getenv("GOOGLE_CLIENT_SECRET"),
Scopes: viper.GetStringSlice("oauth.google.scopes"),
Endpoint: google.Endpoint,
},
Service: services,
Repo: repos,
},
)
srv := new(esauth.Server)
if err := srv.Run(viper.GetString("port"), handlers.InitRoutes()); err != nil {
logrus.Fatalf("error occured while running http server: %s", err.Error())
}
}
func initConfig() error {
viper.AddConfigPath("configs")
viper.SetConfigName("config")
return viper.ReadInConfig()
}