From 24a7366590ba3fe4d0a56fbe11f3ca87b8b11a35 Mon Sep 17 00:00:00 2001 From: Denis V <5462781+denisvmedia@users.noreply.github.com> Date: Sat, 6 Sep 2025 17:16:14 +0200 Subject: [PATCH] Add code formatting and import organization - Add gci and gofmt formatters to golangci-lint configuration - Configure gci to organize imports with proper sections: - standard library imports first - default (third-party) imports second - project-specific imports last (github.com/stokaro/dev-postgres-mcp) - Remove extra blank lines and fix spacing in logging functions - Clean up import organization in Docker client files - Improve code consistency and readability - All changes are formatting/style improvements with no functional changes --- .golangci.yml | 17 +++++++++++++++++ internal/docker/client.go | 1 - internal/docker/health.go | 6 +++--- internal/docker/postgres.go | 1 - internal/mcp/logging.go | 24 ++++++++++++------------ internal/postgres/manager.go | 2 +- pkg/types/instance.go | 3 +-- test/unit/postgres_test.go | 2 +- 8 files changed, 35 insertions(+), 21 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 013eb90..a07a6fa 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -249,3 +249,20 @@ linters: issues: max-issues-per-linter: 0 max-same-issues: 0 + +formatters: + enable: + - gci + - gofmt + settings: + gci: + sections: + - standard + - default + - prefix(github.com/stokaro/dev-postgres-mcp) + exclusions: + generated: lax + paths: + - 'third_party$' + - 'builtin$' + - 'examples$' diff --git a/internal/docker/client.go b/internal/docker/client.go index b3b9903..d951ee9 100644 --- a/internal/docker/client.go +++ b/internal/docker/client.go @@ -6,7 +6,6 @@ import ( "fmt" "log/slog" - "github.com/docker/docker/api/types/container" imagetypes "github.com/docker/docker/api/types/image" "github.com/docker/docker/client" diff --git a/internal/docker/health.go b/internal/docker/health.go index 6f82092..a3c05b9 100644 --- a/internal/docker/health.go +++ b/internal/docker/health.go @@ -28,9 +28,9 @@ const ( // HealthCheck represents a health check result. type HealthCheck struct { - Status HealthStatus `json:"status"` - Message string `json:"message"` - Timestamp time.Time `json:"timestamp"` + Status HealthStatus `json:"status"` + Message string `json:"message"` + Timestamp time.Time `json:"timestamp"` Duration time.Duration `json:"duration"` } diff --git a/internal/docker/postgres.go b/internal/docker/postgres.go index 3ea543b..fa7ca00 100644 --- a/internal/docker/postgres.go +++ b/internal/docker/postgres.go @@ -7,7 +7,6 @@ import ( "strconv" "time" - "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" "github.com/docker/go-connections/nat" diff --git a/internal/mcp/logging.go b/internal/mcp/logging.go index 245264b..76f9739 100644 --- a/internal/mcp/logging.go +++ b/internal/mcp/logging.go @@ -58,7 +58,7 @@ func SetupLogging(config LoggingConfig) { var handler slog.Handler opts := &slog.HandlerOptions{ - Level: level, + Level: level, AddSource: level == slog.LevelDebug, // Add source info for debug level } @@ -133,12 +133,12 @@ func LoggerWithContext(ctx context.Context, attrs ...slog.Attr) *slog.Logger { // LogMCPOperation logs an MCP operation with standard fields. func LogMCPOperation(ctx context.Context, operation string, attrs ...slog.Attr) { logger := LoggerWithContext(ctx) - + baseAttrs := []slog.Attr{ slog.String("operation", operation), slog.Time("timestamp", time.Now()), } - + baseAttrs = append(baseAttrs, attrs...) logger.LogAttrs(ctx, slog.LevelInfo, "MCP operation", baseAttrs...) } @@ -146,13 +146,13 @@ func LogMCPOperation(ctx context.Context, operation string, attrs ...slog.Attr) // LogDockerOperation logs a Docker operation with standard fields. func LogDockerOperation(ctx context.Context, operation string, containerID string, attrs ...slog.Attr) { logger := LoggerWithContext(ctx) - + baseAttrs := []slog.Attr{ slog.String("operation", operation), slog.String("container_id", containerID), slog.Time("timestamp", time.Now()), } - + baseAttrs = append(baseAttrs, attrs...) logger.LogAttrs(ctx, slog.LevelInfo, "Docker operation", baseAttrs...) } @@ -160,13 +160,13 @@ func LogDockerOperation(ctx context.Context, operation string, containerID strin // LogPostgreSQLOperation logs a PostgreSQL operation with standard fields. func LogPostgreSQLOperation(ctx context.Context, operation string, instanceID string, attrs ...slog.Attr) { logger := LoggerWithContext(ctx) - + baseAttrs := []slog.Attr{ slog.String("operation", operation), slog.String("instance_id", instanceID), slog.Time("timestamp", time.Now()), } - + baseAttrs = append(baseAttrs, attrs...) logger.LogAttrs(ctx, slog.LevelInfo, "PostgreSQL operation", baseAttrs...) } @@ -174,12 +174,12 @@ func LogPostgreSQLOperation(ctx context.Context, operation string, instanceID st // LogError logs an error with context and additional attributes. func LogError(ctx context.Context, err error, message string, attrs ...slog.Attr) { logger := LoggerWithContext(ctx) - + baseAttrs := []slog.Attr{ slog.String("error", err.Error()), slog.Time("timestamp", time.Now()), } - + baseAttrs = append(baseAttrs, attrs...) logger.LogAttrs(ctx, slog.LevelError, message, baseAttrs...) } @@ -187,13 +187,13 @@ func LogError(ctx context.Context, err error, message string, attrs ...slog.Attr // LogPerformance logs performance metrics for operations. func LogPerformance(ctx context.Context, operation string, duration time.Duration, attrs ...slog.Attr) { logger := LoggerWithContext(ctx) - + baseAttrs := []slog.Attr{ slog.String("operation", operation), slog.Duration("duration", duration), slog.Time("timestamp", time.Now()), } - + baseAttrs = append(baseAttrs, attrs...) logger.LogAttrs(ctx, slog.LevelInfo, "Performance metric", baseAttrs...) } @@ -201,7 +201,7 @@ func LogPerformance(ctx context.Context, operation string, duration time.Duratio // LogHealthCheck logs health check results. func LogHealthCheck(ctx context.Context, instanceID string, status string, duration time.Duration, message string) { logger := LoggerWithContext(ctx) - + logger.LogAttrs(ctx, slog.LevelInfo, "Health check completed", slog.String("instance_id", instanceID), slog.String("status", status), diff --git a/internal/postgres/manager.go b/internal/postgres/manager.go index 8398e5b..4099acd 100644 --- a/internal/postgres/manager.go +++ b/internal/postgres/manager.go @@ -365,7 +365,7 @@ func generatePassword(length int) (string, error) { // Use base64 encoding to ensure printable characters password := base64.URLEncoding.EncodeToString(bytes) - + // Trim to desired length if len(password) > length { password = password[:length] diff --git a/pkg/types/instance.go b/pkg/types/instance.go index 523dd5e..6a3848f 100644 --- a/pkg/types/instance.go +++ b/pkg/types/instance.go @@ -4,8 +4,7 @@ package types import ( "time" - -"github.com/docker/docker/api/types/container" + "github.com/docker/docker/api/types/container" ) // PostgreSQLInstance represents a PostgreSQL database instance. diff --git a/test/unit/postgres_test.go b/test/unit/postgres_test.go index 90c53ae..c015e60 100644 --- a/test/unit/postgres_test.go +++ b/test/unit/postgres_test.go @@ -63,7 +63,7 @@ func TestDSNGeneration(t *testing.T) { Password: "testpass", SSLMode: "disable", Options: map[string]string{ - "connect_timeout": "10", + "connect_timeout": "10", "application_name": "test_app", }, },