ticket-pimp/cmd/main.go

102 lines
2.2 KiB
Go

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)
}
}()
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)
}
}