64 lines
2.0 KiB
Go
64 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"authorization/internal"
|
|
"authorization/internal/config"
|
|
"authorization/internal/handler"
|
|
"authorization/internal/repository"
|
|
"authorization/internal/service"
|
|
"os"
|
|
|
|
"github.com/golang-migrate/migrate/v4"
|
|
_ "github.com/golang-migrate/migrate/v4/database/postgres" // Импорт драйвера PostgreSQL
|
|
_ "github.com/golang-migrate/migrate/v4/source/file" // Импорт файлового драйвера
|
|
"github.com/joho/godotenv"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func main() {
|
|
cfg, err := initConfigs()
|
|
if err != nil {
|
|
logrus.Fatalf("Ошибка считывания конфига: %s", err.Error())
|
|
}
|
|
if err := godotenv.Load(); err != nil {
|
|
logrus.Fatalf("Ошибка загрузки конфига %s", err.Error())
|
|
}
|
|
print(cfg.Token.AccessToken.SecretWord)
|
|
print(cfg.Token.RefreshToken.SecretWord)
|
|
db, err := repository.NewPostgresDB(repository.Config{
|
|
Host: cfg.DB.Host,
|
|
Port: cfg.DB.Port,
|
|
Username: cfg.DB.Username,
|
|
Password: os.Getenv("DB_PASSWORD"),
|
|
DBName: cfg.DB.DBname,
|
|
SSLMode: cfg.DB.Sslmode,
|
|
})
|
|
|
|
if err != nil {
|
|
logrus.Fatalf("Ошибка подключения к базе данных %s", err.Error())
|
|
}
|
|
m, err := migrate.New(
|
|
"file://schema",
|
|
"postgres://postgres:postgres@localhost:5432/authorization?sslmode=disable")
|
|
if err != nil {
|
|
logrus.Fatalf("Ошибка инициализации миграций: %s", err.Error())
|
|
}
|
|
|
|
// Применение миграций
|
|
if err := m.Up(); err != nil && err != migrate.ErrNoChange {
|
|
logrus.Fatalf("Ошибка применения миграций: %s", err.Error())
|
|
}
|
|
repository := repository.NewRepository(db)
|
|
services := service.NewServices(repository)
|
|
handlers := handler.NewHandler(services)
|
|
|
|
srv := new(internal.Server)
|
|
if err := srv.Run(cfg.Server.Port, handlers.InitRoutes()); err != nil {
|
|
logrus.Fatalf("Ошибка запуска сервера: %s", err.Error())
|
|
}
|
|
}
|
|
|
|
func initConfigs() (*config.Config, error) {
|
|
return config.LoadConfig("configs/application.yaml")
|
|
}
|