- create cloud folder discord handler;

This commit is contained in:
naudachu 2023-11-06 18:07:16 +05:00
parent f8bccf0135
commit 6f4824e628
3 changed files with 94 additions and 17 deletions

View File

@ -22,7 +22,6 @@ func main() {
log.Print("started") log.Print("started")
config := domain.InitConfig("develop.env") config := domain.InitConfig("develop.env")
run(config) run(config)
// test(config)
} }
func run(conf domain.Config) { func run(conf domain.Config) {
@ -43,13 +42,13 @@ func run(conf domain.Config) {
gitService := services.NewGit(conf.Git) gitService := services.NewGit(conf.Git)
cloudService := services.NewCloud(conf.Cloud) cloudService := services.NewCloud(conf.Cloud)
codeService := services.NewCodaClient(conf.Coda) codaService := services.NewCodaClient(conf.Coda)
// Инициализация контроллера: // Инициализация контроллера:
controller := controller.NewWorkflowController( controller := controller.NewWorkflowController(
gitService, gitService,
cloudService, cloudService,
codeService, codaService,
conn, conn,
) )
@ -68,7 +67,7 @@ func run(conf domain.Config) {
// TicketsRepo: db, // TicketsRepo: db,
GitService: gitService, GitService: gitService,
CloudService: cloudService, CloudService: cloudService,
Coda: codeService, Coda: codaService,
AppConfig: &conf, AppConfig: &conf,
} }

View File

@ -22,6 +22,7 @@ func InitRouter(wc controller.WorkflowController) *router {
r.Routes = append( r.Routes = append(
r.Routes, r.Routes,
r.CreateRepoHandler(3), r.CreateRepoHandler(3),
r.CreateFolderHandler(3),
r.CreateTicketHandler(3), r.CreateTicketHandler(3),
) )
r.controller = wc r.controller = wc
@ -97,22 +98,99 @@ func (h *router) CreateRepoHandler(repoNameMinLength int) route {
} }
} }
if option, ok := optionMap["repo_name"]; ok { if project == nil {
str = option.StringValue() if option, ok := optionMap["repo_name"]; ok {
str = option.StringValue()
} else {
str = ""
}
} else { } else {
str = project.ShortName str = project.ShortName
} }
str = str + suffix if str == "" {
result = "Ты, либо в проекте репо создавай, либо имя напиши, блет!"
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)
} else { } 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"
}
} }
} }

View File

@ -41,8 +41,8 @@ func Run(ctx context.Context, opts TelegramOptions) error {
Message(h.Init, tgb.Command("init")). Message(h.Init, tgb.Command("init")).
Message(h.PingHandler, tgb.Command("ping")). Message(h.PingHandler, tgb.Command("ping")).
// Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")). // Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")).
Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")). // Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")).
Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")). // Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")).
Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task")) Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task"))
return tgb.NewPoller( return tgb.NewPoller(