Add gerrit implementation
Change-Id: I293cea35572b051cd1d4a0466fe2fd5a06e81ad9
diff --git a/server/git/gerrit.go b/server/git/gerrit.go
index d795079..d1d029f 100644
--- a/server/git/gerrit.go
+++ b/server/git/gerrit.go
@@ -5,6 +5,7 @@
"context"
"encoding/json"
"fmt"
+ "log/slog"
"net/http"
"strconv"
"strings"
@@ -17,12 +18,14 @@
Password string // Can be HTTP password or API token
BaseURL string
HTTPClient *http.Client
+ Logger *slog.Logger
}
// GerritPullRequestProvider implements PullRequestProvider for Gerrit
type GerritPullRequestProvider struct {
config GerritConfig
project string
+ logger *slog.Logger
}
// NewGerritPullRequestProvider creates a new Gerrit pull request provider
@@ -30,10 +33,14 @@
if config.HTTPClient == nil {
config.HTTPClient = &http.Client{Timeout: 30 * time.Second}
}
+ if config.Logger == nil {
+ config.Logger = slog.Default()
+ }
return &GerritPullRequestProvider{
config: config,
project: project,
+ logger: config.Logger,
}
}
@@ -145,6 +152,14 @@
}
url := fmt.Sprintf("%s/a/changes/", g.config.BaseURL)
+
+ // Log change creation with structured data
+ g.logger.Info("Creating Gerrit change",
+ slog.String("url", url),
+ slog.String("project", g.project),
+ slog.String("subject", options.Title),
+ slog.String("branch", options.BaseBranch),
+ slog.String("topic", options.HeadBranch))
req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(jsonBody))
if err != nil {
return nil, fmt.Errorf("failed to create request: %w", err)