diff --git a/cmd/main.go b/cmd/main.go index bd1dbd8..f750f95 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -22,7 +22,6 @@ func main() { log.Print("started") config := domain.InitConfig("develop.env") run(config) - // test(config) } func run(conf domain.Config) { @@ -43,13 +42,13 @@ func run(conf domain.Config) { gitService := services.NewGit(conf.Git) cloudService := services.NewCloud(conf.Cloud) - codeService := services.NewCodaClient(conf.Coda) + codaService := services.NewCodaClient(conf.Coda) // Инициализация контроллера: controller := controller.NewWorkflowController( gitService, cloudService, - codeService, + codaService, conn, ) @@ -68,7 +67,7 @@ func run(conf domain.Config) { // TicketsRepo: db, GitService: gitService, CloudService: cloudService, - Coda: codeService, + Coda: codaService, AppConfig: &conf, } diff --git a/discord/handler/handler.go b/discord/handler/handler.go index 16bc927..08b77f0 100644 --- a/discord/handler/handler.go +++ b/discord/handler/handler.go @@ -22,6 +22,7 @@ func InitRouter(wc controller.WorkflowController) *router { r.Routes = append( r.Routes, r.CreateRepoHandler(3), + r.CreateFolderHandler(3), r.CreateTicketHandler(3), ) r.controller = wc @@ -97,22 +98,99 @@ func (h *router) CreateRepoHandler(repoNameMinLength int) route { } } - if option, ok := optionMap["repo_name"]; ok { - str = option.StringValue() + if project == nil { + if option, ok := optionMap["repo_name"]; ok { + str = option.StringValue() + } else { + str = "" + } } else { str = project.ShortName } - str = str + suffix - - var g *domain.Git - - g, err := h.controller.IGit.CreateRepo(str) - // g, err := h.git.CreateRepo(str) - if err != nil { - result = fmt.Sprintf("error while repo creation: %v", err) + if str == "" { + result = "Ты, либо в проекте репо создавай, либо имя напиши, блет!" } else { - result = "🚀 " + g.HtmlUrl + " was created" + str = str + suffix + + // var g *domain.Git + + g, err := h.controller.IGit.CreateRepo(str) + if err != nil { + result = fmt.Sprintf("error while repo creation: %v", err) + } else { + result = "🚀 " + g.HtmlUrl + " was created" + } + } + } + + discerr := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ + // Ignore type for now, they will be discussed in "responses" + Type: discordgo.InteractionResponseChannelMessageWithSource, + Data: &discordgo.InteractionResponseData{ + Content: result, + }, + }) + log.Println(discerr) + }, + } +} + +func (h *router) CreateFolderHandler(nameMinLenght int) route { + const ( + nameOption string = "folder_name" + ) + return route{ + Command: discordgo.ApplicationCommand{ + Name: "folder", + Description: "Command for cloud folder creation", + Options: []*discordgo.ApplicationCommandOption{ + { + Type: discordgo.ApplicationCommandOptionString, + Name: nameOption, + Description: "Type the repository's name", + Required: false, + MinLength: &nameMinLenght, + }, + }, + }, + Handler: func(s *discordgo.Session, i *discordgo.InteractionCreate) { + var result string + // Access options in the order provided by the user. + options := i.ApplicationCommandData().Options + + // Or convert the slice into a map + optionMap := make(map[string]*discordgo.ApplicationCommandInteractionDataOption, len(options)) + for _, opt := range options { + optionMap[opt.Name] = opt + } + + var str string = "" + + project, err := h.controller.GetProjectByChannelID(context.TODO(), i.ChannelID) + if err != nil { + result = fmt.Sprintf("unable to retrieve project from db, error: %v", err) + } else { + if project == nil { + if option, ok := optionMap[nameOption]; ok { + str = option.StringValue() + } else { + str = "" + } + } else { + str = project.ShortName + } + + if str == "" { + result = "Ты, либо в проекте директорию создавай, либо имя напиши, блет!" + } else { + + f, err := h.controller.ICloud.CreateFolder(str) + if err != nil { + result = fmt.Sprintf("error while cloud folder creation: %v", err) + } else { + result = "📂 Folder: " + f.PrivateURL + " was created" + } } } diff --git a/telegram/telegram.go b/telegram/telegram.go index ebc1128..521012d 100644 --- a/telegram/telegram.go +++ b/telegram/telegram.go @@ -41,8 +41,8 @@ func Run(ctx context.Context, opts TelegramOptions) error { Message(h.Init, tgb.Command("init")). Message(h.PingHandler, tgb.Command("ping")). // Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")). - Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")). - Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")). + // Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")). + // Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")). Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task")) return tgb.NewPoller(