From caaed14ebcf67381a3b91679e7913e2c96ac228f Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Mon, 2 Mar 2026 02:01:55 +0700 Subject: [PATCH] clear pdf --- cmd/evening_detective/main.go | 4 ++++ .../pdf}/JetBrainsMono-Medium.ttf | Bin internal/modules/pdf/interface.go | 7 +++++++ .../pdf_service => modules/pdf}/service.go | 13 +++++++++---- internal/services/services.go | 7 +++++-- 5 files changed, 25 insertions(+), 6 deletions(-) rename internal/{services/pdf_service => modules/pdf}/JetBrainsMono-Medium.ttf (100%) create mode 100644 internal/modules/pdf/interface.go rename internal/{services/pdf_service => modules/pdf}/service.go (94%) diff --git a/cmd/evening_detective/main.go b/cmd/evening_detective/main.go index 667dd5a..5923750 100644 --- a/cmd/evening_detective/main.go +++ b/cmd/evening_detective/main.go @@ -7,6 +7,7 @@ import ( "evening_detective/internal/config" "evening_detective/internal/modules/link" "evening_detective/internal/modules/password" + "evening_detective/internal/modules/pdf" "evening_detective/internal/services" "evening_detective/internal/services/story_service" proto "evening_detective/proto" @@ -53,6 +54,8 @@ func main() { passwordGenerator := password.NewPasswordGenerator() + pdfGenerator := pdf.NewPDFGenerator() + clientHost := config.GetHost() proto.RegisterEveningDetectiveServer( s, @@ -62,6 +65,7 @@ func main() { storyService, linkService, passwordGenerator, + pdfGenerator, clientHost, ), ), diff --git a/internal/services/pdf_service/JetBrainsMono-Medium.ttf b/internal/modules/pdf/JetBrainsMono-Medium.ttf similarity index 100% rename from internal/services/pdf_service/JetBrainsMono-Medium.ttf rename to internal/modules/pdf/JetBrainsMono-Medium.ttf diff --git a/internal/modules/pdf/interface.go b/internal/modules/pdf/interface.go new file mode 100644 index 0000000..98e4fec --- /dev/null +++ b/internal/modules/pdf/interface.go @@ -0,0 +1,7 @@ +package pdf + +import "evening_detective/internal/models" + +type IPDFGenerator interface { + CreateTeamsPDF(teams []*models.Team) ([]byte, error) +} diff --git a/internal/services/pdf_service/service.go b/internal/modules/pdf/service.go similarity index 94% rename from internal/services/pdf_service/service.go rename to internal/modules/pdf/service.go index 7867899..606f152 100644 --- a/internal/services/pdf_service/service.go +++ b/internal/modules/pdf/service.go @@ -1,12 +1,11 @@ -package pdf_service +package pdf import ( "bytes" + "embed" "evening_detective/internal/models" "strings" - "embed" - "github.com/signintech/gopdf" "github.com/skip2/go-qrcode" ) @@ -14,7 +13,13 @@ import ( //go:embed JetBrainsMono-Medium.ttf var f embed.FS -func CreateTeamsPdf(teams []*models.Team) ([]byte, error) { +type service struct{} + +func NewPDFGenerator() IPDFGenerator { + return &service{} +} + +func (s *service) CreateTeamsPDF(teams []*models.Team) ([]byte, error) { pdf := &gopdf.GoPdf{} pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4}) // W: 595, H: 842 file, err := f.Open("JetBrainsMono-Medium.ttf") diff --git a/internal/services/services.go b/internal/services/services.go index bc3ad37..63fc1d9 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -7,7 +7,7 @@ import ( "evening_detective/internal/models" "evening_detective/internal/modules/link" "evening_detective/internal/modules/password" - "evening_detective/internal/services/pdf_service" + "evening_detective/internal/modules/pdf" "evening_detective/internal/services/story_service" "evening_detective/proto" "fmt" @@ -23,6 +23,7 @@ type Services struct { storyService *story_service.StoryService linkService link.ILinkService passwordGenerator password.IPasswordGenerator + pdfGenerator pdf.IPDFGenerator clientHost string } @@ -31,6 +32,7 @@ func NewServices( storyService *story_service.StoryService, linkService link.ILinkService, passwordGenerator password.IPasswordGenerator, + pdfGenerator pdf.IPDFGenerator, clientHost string, ) *Services { return &Services{ @@ -38,6 +40,7 @@ func NewServices( storyService: storyService, linkService: linkService, passwordGenerator: passwordGenerator, + pdfGenerator: pdfGenerator, clientHost: clientHost, } } @@ -203,7 +206,7 @@ func (s *Services) DownloadTeamsQrCodesFile(ctx context.Context, req *proto.Down for _, team := range teams { team.Link = s.linkService.GetTeamClientLink(s.clientHost, team.Name, team.Password) } - b, err := pdf_service.CreateTeamsPdf(teams) + b, err := s.pdfGenerator.CreateTeamsPDF(teams) if err != nil { return nil, err }