Skip to content

Commit

Permalink
chore: update log decorator template
Browse files Browse the repository at this point in the history
  • Loading branch information
antosdaniel committed Nov 14, 2023
1 parent ac5b2ff commit c6b2b8a
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 38 deletions.
26 changes: 13 additions & 13 deletions internal/grpc/payrollService.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"time"

v1 "github.com/antosdaniel/go-presentation-generate-code/gen/api/grpc/payroll/v1"
"github.com/antosdaniel/go-presentation-generate-code/gen/api/grpc/payroll/v1"
"github.com/antosdaniel/go-presentation-generate-code/internal/db/models"
connect_go "github.com/bufbuild/connect-go"
"github.com/google/uuid"
Expand All @@ -25,7 +25,7 @@ type payrollRepo interface {
Find(ctx context.Context, payrollID string) (*models.Payroll, models.PayslipSlice, error)
}

func (s *payrollServiceServer) AddPayroll(ctx context.Context, request *connect_go.Request[v1.AddPayrollRequest]) (*connect_go.Response[v1.AddPayrollResponse], error) {
func (s *payrollServiceServer) AddPayroll(ctx context.Context, request *connect_go.Request[payrollv1.AddPayrollRequest]) (*connect_go.Response[payrollv1.AddPayrollResponse], error) {
payday, err := time.Parse(time.DateOnly, request.Msg.Payday)
if err != nil {
return nil, fmt.Errorf("invalid payday: %w", err)
Expand All @@ -45,14 +45,14 @@ func (s *payrollServiceServer) AddPayroll(ctx context.Context, request *connect_
return nil, err
}

return &connect_go.Response[v1.AddPayrollResponse]{
Msg: &v1.AddPayrollResponse{
return &connect_go.Response[payrollv1.AddPayrollResponse]{
Msg: &payrollv1.AddPayrollResponse{
PayrollId: id,
},
}, nil
}

func (s *payrollServiceServer) AddPayslip(ctx context.Context, request *connect_go.Request[v1.AddPayslipRequest]) (*connect_go.Response[v1.AddPayslipResponse], error) {
func (s *payrollServiceServer) AddPayslip(ctx context.Context, request *connect_go.Request[payrollv1.AddPayslipRequest]) (*connect_go.Response[payrollv1.AddPayslipResponse], error) {
payslipID := uuid.NewString()
err := s.payrollRepo.AddPayslip(
ctx,
Expand All @@ -66,22 +66,22 @@ func (s *payrollServiceServer) AddPayslip(ctx context.Context, request *connect_
return nil, err
}

return &connect_go.Response[v1.AddPayslipResponse]{
Msg: &v1.AddPayslipResponse{
return &connect_go.Response[payrollv1.AddPayslipResponse]{
Msg: &payrollv1.AddPayslipResponse{
PayslipId: payslipID,
},
}, nil
}

func (s *payrollServiceServer) GetPayroll(ctx context.Context, request *connect_go.Request[v1.GetPayrollRequest]) (*connect_go.Response[v1.GetPayrollResponse], error) {
func (s *payrollServiceServer) GetPayroll(ctx context.Context, request *connect_go.Request[payrollv1.GetPayrollRequest]) (*connect_go.Response[payrollv1.GetPayrollResponse], error) {
payroll, payslips, err := s.payrollRepo.Find(ctx, request.Msg.PayrollId)
if err != nil {
return nil, err
}

responsePayslips := make([]*v1.Payslip, len(payslips))
responsePayslips := make([]*payrollv1.Payslip, len(payslips))
for i, payslip := range payslips {
responsePayslips[i] = &v1.Payslip{
responsePayslips[i] = &payrollv1.Payslip{
Id: payslip.ID,
TenantId: payslip.TenantID,
PayrollId: payslip.PayrollID,
Expand All @@ -91,9 +91,9 @@ func (s *payrollServiceServer) GetPayroll(ctx context.Context, request *connect_
}
}

return &connect_go.Response[v1.GetPayrollResponse]{
Msg: &v1.GetPayrollResponse{
Payroll: &v1.Payroll{
return &connect_go.Response[payrollv1.GetPayrollResponse]{
Msg: &payrollv1.GetPayrollResponse{
Payroll: &payrollv1.Payroll{
Id: payroll.ID,
TenantId: payroll.TenantID,
Payday: payroll.Payday.Format(time.DateOnly),
Expand Down
33 changes: 19 additions & 14 deletions internal/grpc/payrollServiceWithLogs.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion internal/grpc/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package grpc
import (
"database/sql"
"fmt"
"log"
"net/http"
"os"

Expand All @@ -22,7 +23,10 @@ func New(db *sql.DB) *http.Server {
payrollService := newPayrollServiceHandlerWithLog(
newWithAuth(
&payrollServiceServer{repos.NewPayrollRepo(db)},
))
),
log.Writer(),
log.Writer(),
)
path, handler := payrollv1connect.NewPayrollServiceHandler(payrollService)

mux := http.NewServeMux()
Expand Down
26 changes: 16 additions & 10 deletions templates/log
Original file line number Diff line number Diff line change
@@ -1,44 +1,50 @@
import (
"io"
"log"
)

{{ $decorator := (or .Vars.DecoratorName (printf "%sWithLog" .Interface.Name)) }}

// {{$decorator}} implements {{.Interface.Type}} that is instrumented with logging
type {{$decorator}} struct {
_stdlog, _errlog *log.Logger
_base {{.Interface.Type}}
}

// new{{$decorator}} instruments an implementation of the {{.Interface.Type}} with simple logging
func new{{$decorator}}(base {{.Interface.Type}}) {{$decorator}} {
return {{$decorator}}{_base: base}
// New{{$decorator}} instruments an implementation of the {{.Interface.Type}} with simple logging
func new{{$decorator}}(base {{.Interface.Type}}, stdout, stderr io.Writer) {{$decorator}} {
return {{$decorator}}{
_base: base,
_stdlog: log.New(stdout, "", log.LstdFlags),
_errlog: log.New(stderr, "", log.LstdFlags),
}
}

{{range $method := .Interface.Methods}}
// {{$method.Name}} implements {{$.Interface.Type}}
func (_d {{$decorator}}) {{$method.Declaration}} {
{{- if $method.HasParams}}
_params := []interface{}{"{{$decorator}}: calling {{$method.Name}} with params:", {{$method.ParamsNames}} }
log.Println(_params...)
_d._stdlog.Println(_params...)
{{else}}
log.Println("{{$decorator}}: calling {{$method.Name}}")
_d._stdlog.Println("{{$decorator}}: calling {{$method.Name}}")
{{end -}}
defer func() {
{{- if $method.HasResults}}
_results := []interface{}{"{{$decorator}}: {{$method.Name}} returned results:", {{$method.ResultsNames}} }
{{- if $method.ReturnsError}}
if err != nil {
log.Println(_results...)
_d._errlog.Println(_results...)
} else {
log.Println(_results...)
_d._stdlog.Println(_results...)
}
{{else}}
log.Println(_results...)
_d._stdlog.Println(_results...)
{{end -}}
{{else}}
log.Println("{{$decorator}}: {{$method.Name}} finished")
_d._stdlog.Println("{{$decorator}}: {{$method.Name}} finished")
{{end -}}
}()
{{ $method.Pass "_d._base." }}
}
{{end}}
{{end}}

0 comments on commit c6b2b8a

Please sign in to comment.