package main import ( "context" "fmt" "log" "os" "os/signal" "syscall" "ticket-pimp/internal/domain" "ticket-pimp/internal/services" "ticket-pimp/discord" "ticket-pimp/telegram" ticketDB "ticket-pimp/internal/storage/db/tickets" "github.com/jackc/pgx/v5" ) func main() { log.Print("started") config := domain.InitConfig("develop.env") run(config) // test(config) } // func test(conf domain.Config) { // ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill, syscall.SIGTERM) // defer cancel() // conn, err := pgxpool.New(ctx, fmt.Sprintf( // "postgresql://%s:%s@%s:%s/%s", // conf.DB.User, // conf.DB.Pass, // conf.DB.Host, // conf.DB.Port, // conf.DB.Name, // )) // if err != nil { // log.Fatalf("DB connection failed: %v", err) // } // q := configDB.New(conn) // appController := controller.NewAppConfig(q) // ticketConfig, err := appController.NewKey(ctx) // _ = ticketConfig // } func run(conf domain.Config) { ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill, syscall.SIGTERM) defer cancel() // -- DB connection init -- START conn, err := pgx.Connect( ctx, fmt.Sprintf( "postgresql://%s:%s@%s:%s/%s", conf.DB.User, conf.DB.Pass, conf.DB.Host, conf.DB.Port, conf.DB.Name, )) if err != nil { log.Fatalf("DB connection failed: %v", err) } defer conn.Close(ctx) // -- DB connection init -- END ticketsRepo := ticketDB.New(conn) gitService := services.NewGit(conf.Git) cloudService := services.NewCloud(conf.Cloud) codeService := services.NewCodaClient(conf.Coda) go func() { opts := discord.DiscordOptions{ TicketsRepo: ticketsRepo, GitService: gitService, CloudService: cloudService, Coda: codeService, AppConfig: &conf, } if err := discord.Run(conf, opts); err != nil { log.Fatalf("discord bot cannot be runned: %v", err) } }() // go func() { opts := telegram.TelegramOptions{ TicketsRepo: ticketsRepo, GitService: gitService, CloudService: cloudService, Coda: codeService, AppConfig: &conf, } if err := telegram.Run(ctx, opts); err != nil { log.Fatalf("telegram bot cannot be runned: %v", err) defer os.Exit(1) } // }() }