105 lines
2.2 KiB
Go
105 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)
|
|
}
|
|
}()
|
|
|
|
// 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)
|
|
}
|
|
// }()
|
|
|
|
}
|