feat/user-templates (#9)
All checks were successful
Go / build (push) Successful in 14s

feat: user templates
This commit was merged in pull request #9.
This commit is contained in:
2025-12-03 21:27:46 +01:00
parent acaece2659
commit 9a5ea229bf
19 changed files with 584 additions and 343 deletions

View File

@@ -9,7 +9,7 @@ import (
"git.schreifuchs.ch/lou-taylor/accounting/pkg/invoice/report"
)
func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, rate float64, repos []Repo, config *Options) (document io.ReadCloser, r *report.Report, err error) {
func (s *Service) Generate(creditor model.Entity, debtor *model.Entity, rate float64, repos []Repo, config *Options) (document io.ReadCloser, r report.Report, err error) {
if config == nil {
config = &DefaultOptions
}
@@ -27,20 +27,33 @@ func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, rate flo
},
)
if err != nil {
return nil, nil, err
return nil, r, err
}
is = append(is, iss...)
}
is = filter(is, config.IssueFilter)
{
issueURLs := make([]string, 0, len(is))
for _, issue := range is {
issueURLs = append(issueURLs, issue.HTMLURL)
}
s.log.Debug("loaded all issues", "issueURLs", issueURLs)
}
is = s.filterIssues(is, config.IssueFilter)
issues := issue.FromGiteas(is, config.Mindur)
r = report.New(
issues,
creditor,
deptor,
debtor,
rate,
)
if len(config.CustomTemplate) > 1 {
r = r.WithTemplate(config.CustomTemplate)
}
html, err := r.ToHTML()
if err != nil {
return document, r, err
@@ -50,12 +63,14 @@ func (s *Service) Generate(creditor model.Entity, deptor *model.Entity, rate flo
return document, r, err
}
func filter[T any](slice []T, ok func(T) bool) []T {
out := make([]T, 0, len(slice))
func (s *Service) filterIssues(slice []*gitea.Issue, ok func(*gitea.Issue) bool) []*gitea.Issue {
out := make([]*gitea.Issue, 0, len(slice))
for _, item := range slice {
if ok(item) {
out = append(out, item)
for _, issue := range slice {
if ok(issue) {
out = append(out, issue)
} else {
s.log.Debug("filter out issue", "issueURL", issue.HTMLURL)
}
}