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"` } type Service struct { log *slog.Logger gitea giteaClient pdf pdfGenerator } func New(log *slog.Logger, gitea giteaClient, pdf pdfGenerator) *Service { return &Service{ log: log, gitea: gitea, pdf: pdf, } } type giteaClient interface { ListRepoIssues(owner, repo string, opt gitea.ListIssueOption) ([]*gitea.Issue, *gitea.Response, error) } type pdfGenerator interface { HtmlToPdf(html string) (pdf io.ReadCloser, err error) }