Files
LazyPM/internal/models/issueBuilder.go
2026-02-28 16:39:50 +01:00

65 lines
1.2 KiB
Go

package models
type IssueBuilder struct {
ID string
Title string
Description string
Status Status
IssueType IssueType
Priority int
}
func NewIssueBuilder() *IssueBuilder {
return &IssueBuilder{}
}
func NewBaseIssue() *IssueBuilder {
return NewIssueBuilder().
WithTitle("Basic Issue").
WithDescription("Basic Description").
WithStatus(StatusOpen).
WithIssueType(TypeTask)
}
func (b *IssueBuilder) WithID(id string) *IssueBuilder {
b.ID = id
return b
}
func (b *IssueBuilder) WithTitle(title string) *IssueBuilder {
b.Title = title
return b
}
func (b *IssueBuilder) WithDescription(description string) *IssueBuilder {
b.Description = description
return b
}
func (b *IssueBuilder) WithStatus(status Status) *IssueBuilder {
b.Status = status
return b
}
func (b *IssueBuilder) WithIssueType(issueType IssueType) *IssueBuilder {
b.IssueType = issueType
return b
}
func (b *IssueBuilder) WithPriority(priority int) *IssueBuilder {
b.Priority = priority
return b
}
func (b IssueBuilder) Build() *Issue {
return &Issue{
ID: b.ID,
Title: b.Title,
Description: b.Description,
Status: b.Status,
IssueType: b.IssueType,
Priority: b.Priority,
}
}