- farm task handler;
This commit is contained in:
parent
da119ab4d5
commit
77b8bd8abb
|
|
@ -27,9 +27,9 @@ func (h *router) CreateExternalTask() CommandRoute {
|
|||
|
||||
s.InteractionRespond(i.Interaction, &initialResponse)
|
||||
|
||||
go func() {
|
||||
h.controller.InitTask("something like a default description")
|
||||
}()
|
||||
// go func() {
|
||||
// h.controller.InitTask("something like a default description")
|
||||
// }()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ package handler
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
"ticket-pimp/internal/domain"
|
||||
|
||||
|
|
@ -38,33 +36,42 @@ func (h *Handler) FarmTaskHandler(ctx context.Context, mu *tgb.MessageUpdate) er
|
|||
mu.Chat.ID.PeerID(),
|
||||
)
|
||||
|
||||
id, err := h.coda.CreateTask(t.Summary, t.Description, t.Creator, t.CreatorLink)
|
||||
if err != nil {
|
||||
answer := errorAnswer(err.Error())
|
||||
h.LogMessage(ctx, mu, answer)
|
||||
return mu.Answer(answer).ParseMode(tg.HTML).DoVoid(ctx)
|
||||
}
|
||||
if id == "" {
|
||||
answer := errorAnswer("task wasn't created")
|
||||
h.LogMessage(ctx, mu, answer)
|
||||
return mu.Answer(answer).ParseMode(tg.HTML).DoVoid(ctx)
|
||||
}
|
||||
err := h.controller.InitTask(t)
|
||||
|
||||
err = mu.Answer(fmt.Sprintf("Задача с id: %s была создана, жду ссылку", id)).DoVoid(ctx)
|
||||
if err != nil {
|
||||
log.Println("бот не смог ответить про создание задачи")
|
||||
}
|
||||
// Coda.io was deprecated!
|
||||
|
||||
url, err := h.coda.GetRowLink(id)
|
||||
// id, err := h.coda.CreateTask(t.Summary, t.Description, t.Creator, t.CreatorLink)
|
||||
// if err != nil {
|
||||
// answer := errorAnswer(err.Error())
|
||||
// h.LogMessage(ctx, mu, answer)
|
||||
// return mu.Answer(answer).ParseMode(tg.HTML).DoVoid(ctx)
|
||||
// }
|
||||
// if id == "" {
|
||||
// answer := errorAnswer("task wasn't created")
|
||||
// h.LogMessage(ctx, mu, answer)
|
||||
// return mu.Answer(answer).ParseMode(tg.HTML).DoVoid(ctx)
|
||||
// }
|
||||
|
||||
// err = mu.Answer(fmt.Sprintf("Задача с id: %s была создана, жду ссылку", id)).DoVoid(ctx)
|
||||
// if err != nil {
|
||||
// log.Println("бот не смог ответить про создание задачи")
|
||||
// }
|
||||
|
||||
// url, err := h.coda.GetRowLink(id)
|
||||
if err != nil {
|
||||
answer := err.Error()
|
||||
h.LogMessage(ctx, mu, answer)
|
||||
return err
|
||||
}
|
||||
t.URL = url
|
||||
// t.URL = url
|
||||
|
||||
// answer := tg.HTML.Text(
|
||||
// tg.HTML.Line(tg.HTML.Link("🤘 Задача", t.URL), "была создана!"))
|
||||
// h.LogMessage(ctx, mu, answer)
|
||||
// return mu.Answer(answer).
|
||||
// ReplyToMessageID(msgID).ParseMode(tg.HTML).DisableWebPagePreview(true).DoVoid(ctx)
|
||||
answer := tg.HTML.Text(
|
||||
tg.HTML.Line(tg.HTML.Link("🤘 Задача", t.URL), "была создана!"))
|
||||
tg.HTML.Line("🤘 Задача была создана!"))
|
||||
h.LogMessage(ctx, mu, answer)
|
||||
return mu.Answer(answer).
|
||||
ReplyToMessageID(msgID).ParseMode(tg.HTML).DisableWebPagePreview(true).DoVoid(ctx)
|
||||
|
|
|
|||
|
|
@ -1,26 +1,30 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"ticket-pimp/internal/controller"
|
||||
"ticket-pimp/internal/services"
|
||||
)
|
||||
|
||||
type Handler struct {
|
||||
git services.IGit
|
||||
cloud services.ICloud
|
||||
coda services.ICoda
|
||||
key string
|
||||
id string
|
||||
git services.IGit
|
||||
cloud services.ICloud
|
||||
coda services.ICoda
|
||||
key string
|
||||
id string
|
||||
controller *controller.WorkflowController
|
||||
}
|
||||
|
||||
func NewHandler(
|
||||
git services.IGit,
|
||||
cloud services.ICloud,
|
||||
coda services.ICoda,
|
||||
controller *controller.WorkflowController,
|
||||
) *Handler {
|
||||
|
||||
return &Handler{
|
||||
git: git,
|
||||
cloud: cloud,
|
||||
coda: coda,
|
||||
git: git,
|
||||
cloud: cloud,
|
||||
coda: coda,
|
||||
controller: controller,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,21 +4,20 @@ import (
|
|||
"context"
|
||||
"log"
|
||||
"ticket-pimp/client/telegram/handler"
|
||||
"ticket-pimp/internal/controller"
|
||||
"ticket-pimp/internal/domain"
|
||||
"ticket-pimp/internal/services"
|
||||
|
||||
"github.com/mr-linch/go-tg"
|
||||
"github.com/mr-linch/go-tg/tgb"
|
||||
|
||||
tickets "ticket-pimp/internal/storage/db"
|
||||
)
|
||||
|
||||
type TelegramOptions struct {
|
||||
TicketsRepo *tickets.Queries
|
||||
GitService *services.Git
|
||||
CloudService *services.Cloud
|
||||
Coda *services.Coda
|
||||
AppConfig *domain.Config
|
||||
Controller *controller.WorkflowController
|
||||
}
|
||||
|
||||
// runTgBot ...
|
||||
|
|
@ -35,6 +34,7 @@ func Run(ctx context.Context, opts TelegramOptions) error {
|
|||
opts.GitService,
|
||||
opts.CloudService,
|
||||
opts.Coda,
|
||||
opts.Controller,
|
||||
)
|
||||
|
||||
router := tgb.NewRouter().
|
||||
|
|
|
|||
|
|
@ -63,11 +63,11 @@ func run(conf domain.Config) {
|
|||
}()
|
||||
|
||||
opts := telegram.TelegramOptions{
|
||||
// TicketsRepo: db,
|
||||
GitService: gitService,
|
||||
CloudService: cloudService,
|
||||
Coda: codaService,
|
||||
AppConfig: &conf,
|
||||
Controller: controller,
|
||||
}
|
||||
|
||||
if err := telegram.Run(ctx, opts); err != nil {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ package controller
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"ticket-pimp/internal/domain"
|
||||
"ticket-pimp/internal/storage/db"
|
||||
"time"
|
||||
|
||||
|
|
@ -11,7 +13,7 @@ import (
|
|||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
func (wc *WorkflowController) InitTask(description string) {
|
||||
func (wc *WorkflowController) InitTask(t *domain.Task) error {
|
||||
var (
|
||||
token = os.Getenv("DISCORD_TOKEN")
|
||||
channel = os.Getenv("TASKS_CHANNEL")
|
||||
|
|
@ -27,8 +29,31 @@ func (wc *WorkflowController) InitTask(description string) {
|
|||
log.Printf("cannot open the session: %v", err)
|
||||
}
|
||||
|
||||
// dbtask, err := wc.q.InsertTask(context.TODO(), pgtype.Text{String: st.ID, Valid: true})
|
||||
dbtask, err := wc.q.InsertTask(context.TODO(), db.InsertTaskParams{
|
||||
Creator: pgtype.Text{String: t.Creator, Valid: true},
|
||||
CreatorLink: pgtype.Text{
|
||||
String: t.CreatorLink,
|
||||
Valid: true,
|
||||
},
|
||||
Description: pgtype.Text{
|
||||
String: t.Description,
|
||||
Valid: true,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
log.Println("unable to insert task")
|
||||
}
|
||||
|
||||
content := fmt.Sprintf(
|
||||
"## TaskID: %d\nCreated by: %s\n\n%s",
|
||||
dbtask.ID,
|
||||
t.Creator,
|
||||
t.Description,
|
||||
)
|
||||
|
||||
msg := discordgo.MessageSend{
|
||||
Content: description,
|
||||
Content: content,
|
||||
Components: []discordgo.MessageComponent{
|
||||
discordgo.ActionsRow{
|
||||
Components: []discordgo.MessageComponent{
|
||||
|
|
@ -54,12 +79,9 @@ func (wc *WorkflowController) InitTask(description string) {
|
|||
log.Println("unable to send task message")
|
||||
}
|
||||
|
||||
t, err := wc.q.InsertTask(context.TODO(), pgtype.Text{String: st.ID, Valid: true})
|
||||
if err != nil {
|
||||
log.Println("unable to insert task")
|
||||
}
|
||||
|
||||
_ = t
|
||||
_ = dbtask
|
||||
_ = st
|
||||
return err
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ type Task struct {
|
|||
Creator pgtype.Text
|
||||
CreatorLink pgtype.Text
|
||||
Messageid pgtype.Text
|
||||
Description pgtype.Text
|
||||
StartedAt pgtype.Timestamptz
|
||||
ClosedAt pgtype.Timestamptz
|
||||
CreatedAt pgtype.Timestamptz
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ const closeTask = `-- name: CloseTask :one
|
|||
UPDATE tasks
|
||||
SET closed_at = $1
|
||||
WHERE messageID = $2
|
||||
RETURNING id, creator, creator_link, messageid, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
RETURNING id, creator, creator_link, messageid, description, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
`
|
||||
|
||||
type CloseTaskParams struct {
|
||||
|
|
@ -31,6 +31,7 @@ func (q *Queries) CloseTask(ctx context.Context, arg CloseTaskParams) (Task, err
|
|||
&i.Creator,
|
||||
&i.CreatorLink,
|
||||
&i.Messageid,
|
||||
&i.Description,
|
||||
&i.StartedAt,
|
||||
&i.ClosedAt,
|
||||
&i.CreatedAt,
|
||||
|
|
@ -145,21 +146,28 @@ func (q *Queries) GetTicketByID(ctx context.Context, id int32) (Ticket, error) {
|
|||
|
||||
const insertTask = `-- name: InsertTask :one
|
||||
INSERT INTO tasks (
|
||||
messageID
|
||||
creator, creator_link, description
|
||||
) VALUES (
|
||||
$1
|
||||
$1, $2, $3
|
||||
)
|
||||
RETURNING id, creator, creator_link, messageid, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
RETURNING id, creator, creator_link, messageid, description, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
`
|
||||
|
||||
func (q *Queries) InsertTask(ctx context.Context, messageid pgtype.Text) (Task, error) {
|
||||
row := q.db.QueryRow(ctx, insertTask, messageid)
|
||||
type InsertTaskParams struct {
|
||||
Creator pgtype.Text
|
||||
CreatorLink pgtype.Text
|
||||
Description pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) InsertTask(ctx context.Context, arg InsertTaskParams) (Task, error) {
|
||||
row := q.db.QueryRow(ctx, insertTask, arg.Creator, arg.CreatorLink, arg.Description)
|
||||
var i Task
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.Creator,
|
||||
&i.CreatorLink,
|
||||
&i.Messageid,
|
||||
&i.Description,
|
||||
&i.StartedAt,
|
||||
&i.ClosedAt,
|
||||
&i.CreatedAt,
|
||||
|
|
@ -254,7 +262,7 @@ const startTask = `-- name: StartTask :one
|
|||
UPDATE tasks
|
||||
SET started_at = $1
|
||||
WHERE messageID = $2
|
||||
RETURNING id, creator, creator_link, messageid, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
RETURNING id, creator, creator_link, messageid, description, started_at, closed_at, created_at, deleted_at, updated_at
|
||||
`
|
||||
|
||||
type StartTaskParams struct {
|
||||
|
|
@ -270,6 +278,7 @@ func (q *Queries) StartTask(ctx context.Context, arg StartTaskParams) (Task, err
|
|||
&i.Creator,
|
||||
&i.CreatorLink,
|
||||
&i.Messageid,
|
||||
&i.Description,
|
||||
&i.StartedAt,
|
||||
&i.ClosedAt,
|
||||
&i.CreatedAt,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@ CREATE TABLE tasks (
|
|||
creator_link VARCHAR(255),
|
||||
messageID VARCHAR(255),
|
||||
|
||||
description TEXT,
|
||||
|
||||
|
||||
started_at TIMESTAMPTZ,
|
||||
closed_at TIMESTAMPTZ,
|
||||
|
||||
|
|
|
|||
|
|
@ -56,9 +56,9 @@ UPDATE tickets SET deleted_at = current_timestamp WHERE key = $1;
|
|||
|
||||
-- name: InsertTask :one
|
||||
INSERT INTO tasks (
|
||||
messageID
|
||||
creator, creator_link, description
|
||||
) VALUES (
|
||||
$1
|
||||
$1, $2, $3
|
||||
)
|
||||
RETURNING *;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue