feat: more options
Some checks failed
Go / build (push) Failing after 1m16s

This commit is contained in:
2025-11-04 20:16:44 +01:00
parent 8f5ae15ef0
commit cfbb475a42
6 changed files with 58 additions and 22 deletions

View File

@@ -2,7 +2,6 @@ package invoice
import (
"io"
"time"
"code.gitea.io/sdk/gitea"
"git.schreifuchs.ch/lou-taylor/accounting/pkg/invoice/issue"
@@ -10,7 +9,10 @@ import (
"git.schreifuchs.ch/lou-taylor/accounting/pkg/invoice/report"
)
func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, mindur time.Duration, rate float64, repos []Repo) (document io.ReadCloser, r *report.Report, err error) {
func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, rate float64, repos []Repo, config *Options) (document io.ReadCloser, r *report.Report, err error) {
if config == nil {
config = &DefaultOptions
}
var is []*gitea.Issue
for _, repo := range repos {
iss, _, err := s.gitea.ListRepoIssues(
@@ -18,9 +20,9 @@ func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, mindur t
repo.Repo,
gitea.ListIssueOption{
ListOptions: gitea.ListOptions{Page: 0, PageSize: 99999},
Since: time.Now().AddDate(0, -1, 0),
Before: time.Now(),
State: gitea.StateClosed,
Since: config.Since,
Before: config.Before,
State: config.IssueState,
},
)
if err != nil {
@@ -30,13 +32,8 @@ func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, mindur t
is = append(is, iss...)
}
is = filter(
is,
func(i *gitea.Issue) bool {
return i.Closed != nil && i.Closed.After(time.Now().AddDate(0, -1, 0))
},
)
issues := issue.FromGiteas(is, mindur)
is = filter(is, config.IssueFilter)
issues := issue.FromGiteas(is, config.Mindur)
r = report.New(
issues,
creditor,

View File

@@ -3,10 +3,29 @@ package invoice
import (
"io"
"log/slog"
"time"
"code.gitea.io/sdk/gitea"
)
var DefaultOptions = Options{
Mindur: time.Minute * 15,
Since: time.Now().AddDate(0, -1, 0),
Before: time.Now(),
IssueState: gitea.StateClosed,
IssueFilter: func(i *gitea.Issue) bool {
return i.Closed != nil && i.Closed.After(time.Now().AddDate(0, -1, 0))
},
}
type Options struct {
Mindur time.Duration
Since time.Time
Before time.Time
IssueState gitea.StateType
IssueFilter func(i *gitea.Issue) bool
}
type Repo struct {
Owner string `json:"owner"`
Repo string `json:"repo"`