jira-cli/internal/query/sprint.go

118 lines
2.2 KiB
Go

package query
import (
"fmt"
"github.com/ankitpokhrel/jira-cli/pkg/jira"
)
// Sprint is a query type for sprint command.
type Sprint struct {
Flags FlagParser
params *SprintParams
}
// NewSprint creates and initializes a new Sprint type.
func NewSprint(flags FlagParser) (*Sprint, error) {
sp := SprintParams{}
if err := sp.init(flags); err != nil {
return nil, err
}
return &Sprint{
Flags: flags,
params: &sp,
}, nil
}
// Get returns constructed query params.
func (s *Sprint) Get() string {
var state string
switch {
case s.params.Status != "":
state = fmt.Sprintf("state=%s", s.params.Status)
case s.params.Current:
state = fmt.Sprintf("state=%s", jira.SprintStateActive)
case s.params.Prev:
state = fmt.Sprintf("state=%s", jira.SprintStateClosed)
case s.params.Next:
state = fmt.Sprintf("state=%s", jira.SprintStateFuture)
default:
state = fmt.Sprintf("state=%s,%s", jira.SprintStateActive, jira.SprintStateClosed)
}
if s.params.debug {
fmt.Printf("JQL: %s\n", state)
}
return state
}
// Params returns sprint command params.
func (s *Sprint) Params() *SprintParams {
return s.params
}
// SprintParams is sprint command parameters.
type SprintParams struct {
Status string
Current bool
Prev bool
Next bool
From uint
Limit uint
ShowAllIssues bool
debug bool
}
func (sp *SprintParams) init(flags FlagParser) error {
status, err := flags.GetString("state")
if err != nil {
return err
}
sp.Status = status
current, err := flags.GetBool("current")
if err != nil {
return err
}
sp.Current = current
prev, err := flags.GetBool("prev")
if err != nil {
return err
}
sp.Prev = prev
next, err := flags.GetBool("next")
if err != nil {
return err
}
sp.Next = next
showAll, err := flags.GetBool("show-all-issues")
if err != nil {
return err
}
sp.ShowAllIssues = showAll
paginate, err := flags.GetString("paginate")
if err != nil {
return err
}
from, limit, err := getPaginateParams(paginate)
if err != nil {
return err
}
sp.From = from
sp.Limit = limit
debug, err := flags.GetBool("debug")
if err != nil {
return err
}
sp.debug = debug
return nil
}