diff --git a/README.md b/README.md index 72a4928..d54f423 100644 --- a/README.md +++ b/README.md @@ -14,52 +14,65 @@ To use, run the following command: go get github.com/raystack/salt ``` -## Pacakages +## Packages -### Configuration and Environment -- **`config`** +### Configuration +- **`config`** Utilities for managing application configurations using environment variables, files, or defaults. ### CLI Utilities -- **`cli/cmdx`** - Command execution and management tools. +- **`cli/commander`** + Command execution, completion, help topics, and management tools. -- **`cli/printer`** +- **`cli/printer`** Utilities for formatting and printing output to the terminal. -- **`cli/prompt`** +- **`cli/prompter`** Interactive CLI prompts for user input. -- **`cli/terminal`** - Terminal utilities for colors, cursor management, and formatting. +- **`cli/terminator`** + Terminal utilities for browser, pager, and brew helpers. -- **`cli/version`** +- **`cli/releaser`** Utilities for displaying and managing CLI tool versions. ### Authentication and Security -- **`auth/oidc`** +- **`auth/oidc`** Helpers for integrating OpenID Connect authentication flows. -- **`auth/audit`** +- **`auth/audit`** Auditing tools for tracking security events and compliance. ### Server and Infrastructure -- **`server`** - Utilities for setting up and managing HTTP or RPC servers. +- **`server/mux`** + gRPC-gateway multiplexer for serving gRPC and HTTP on a single port. -- **`db`** +- **`server/spa`** + Single-page application static file handler. + +- **`db`** Helpers for database connections, migrations, and query execution. -- **`telemetry`** - Observability tools for capturing application metrics and traces. +### Observability +- **`observability`** + OpenTelemetry initialization, metrics, and tracing setup. -### Development and Testing -- **`dockertestx`** - Tools for creating and managing Docker-based testing environments. +- **`observability/logger`** + Structured logging with Zap and Logrus adapters. + +- **`observability/otelgrpc`** + OpenTelemetry gRPC client interceptors for metrics. -### Utilities -- **`log`** - Simplified logging utilities for structured and unstructured log messages. +- **`observability/otelhttpclient`** + OpenTelemetry HTTP client transport for metrics. -- **`utils`** - General-purpose utility functions for common programming tasks. +### Data Utilities +- **`data/rql`** + REST query language parser for filters, pagination, sorting, and search. + +- **`data/jsondiff`** + JSON document diffing and reconstruction. + +### Development and Testing +- **`testing/dockertestx`** + Docker-based test environment helpers for Postgres, Minio, SpiceDB, and more. diff --git a/auth/audit/repositories/dockertest_test.go b/auth/audit/repositories/dockertest_test.go index 6af33a9..62575ff 100644 --- a/auth/audit/repositories/dockertest_test.go +++ b/auth/audit/repositories/dockertest_test.go @@ -11,10 +11,10 @@ import ( _ "github.com/lib/pq" "github.com/ory/dockertest/v3" "github.com/ory/dockertest/v3/docker" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" ) -func newTestRepository(logger log.Logger) (*repositories.PostgresRepository, *dockertest.Pool, *dockertest.Resource, error) { +func newTestRepository(logger logger.Logger) (*repositories.PostgresRepository, *dockertest.Pool, *dockertest.Resource, error) { host := "localhost" port := "5433" user := "test_user" diff --git a/auth/audit/repositories/postgres_test.go b/auth/audit/repositories/postgres_test.go index e651881..2c6536c 100644 --- a/auth/audit/repositories/postgres_test.go +++ b/auth/audit/repositories/postgres_test.go @@ -11,7 +11,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/jmoiron/sqlx/types" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" "github.com/stretchr/testify/suite" ) @@ -27,7 +27,7 @@ func TestPostgresRepository(t *testing.T) { func (s *PostgresRepositoryTestSuite) SetupSuite() { var err error - repository, pool, dockerResource, err := newTestRepository(log.NewLogrus()) + repository, pool, dockerResource, err := newTestRepository(logger.NewLogrus()) if err != nil { s.T().Fatal(err) } diff --git a/jsondiff/README.md b/data/jsondiff/README.md similarity index 97% rename from jsondiff/README.md rename to data/jsondiff/README.md index bcca72f..c110187 100644 --- a/jsondiff/README.md +++ b/data/jsondiff/README.md @@ -13,7 +13,7 @@ A Go library for calculating differences between JSON documents and reconstructi ## Installation ```bash -go get github.com/raystack/salt/jsondiff +go get github.com/raystack/salt/data/jsondiff ``` ## Usage @@ -28,7 +28,7 @@ import ( "fmt" "reflect" "strings" - "github.com/raystack/salt/jsondiff" + "github.com/raystack/salt/data/jsondiff" ) func main() { @@ -105,7 +105,7 @@ import ( "fmt" "reflect" "strings" - "github.com/raystack/salt/jsondiff" + "github.com/raystack/salt/data/jsondiff" ) func main() { diff --git a/jsondiff/jsondiff.go b/data/jsondiff/jsondiff.go similarity index 100% rename from jsondiff/jsondiff.go rename to data/jsondiff/jsondiff.go diff --git a/jsondiff/jsondiff_test.go b/data/jsondiff/jsondiff_test.go similarity index 100% rename from jsondiff/jsondiff_test.go rename to data/jsondiff/jsondiff_test.go diff --git a/jsondiff/jsondiff_wi2l.go b/data/jsondiff/jsondiff_wi2l.go similarity index 100% rename from jsondiff/jsondiff_wi2l.go rename to data/jsondiff/jsondiff_wi2l.go diff --git a/jsondiff/jsondiff_wi2l_test.go b/data/jsondiff/jsondiff_wi2l_test.go similarity index 100% rename from jsondiff/jsondiff_wi2l_test.go rename to data/jsondiff/jsondiff_wi2l_test.go diff --git a/jsondiff/reconstructor.go b/data/jsondiff/reconstructor.go similarity index 100% rename from jsondiff/reconstructor.go rename to data/jsondiff/reconstructor.go diff --git a/rql/README.md b/data/rql/README.md similarity index 100% rename from rql/README.md rename to data/rql/README.md diff --git a/rql/parser.go b/data/rql/parser.go similarity index 100% rename from rql/parser.go rename to data/rql/parser.go diff --git a/rql/parser_test.go b/data/rql/parser_test.go similarity index 100% rename from rql/parser_test.go rename to data/rql/parser_test.go diff --git a/log/logger.go b/observability/logger/logger.go similarity index 99% rename from log/logger.go rename to observability/logger/logger.go index a37ed04..8dab3e1 100644 --- a/log/logger.go +++ b/observability/logger/logger.go @@ -1,4 +1,4 @@ -package log +package logger import ( "io" diff --git a/log/logrus.go b/observability/logger/logrus.go similarity index 96% rename from log/logrus.go rename to observability/logger/logrus.go index 7818e66..60a0464 100644 --- a/log/logrus.go +++ b/observability/logger/logrus.go @@ -1,4 +1,4 @@ -package log +package logger import ( "io" @@ -76,7 +76,7 @@ func LogrusWithWriter(writer io.Writer) Option { // func (p *PlainFormatter) Format(entry *logrus.Entry) ([]byte, error) { // return []byte(entry.Message), nil // } -// l := log.NewLogrus(log.LogrusWithFormatter(&PlainFormatter{})) +// l := logger.NewLogrus(logger.LogrusWithFormatter(&PlainFormatter{})) func LogrusWithFormatter(f logrus.Formatter) Option { return func(logger interface{}) { logger.(*Logrus).log.SetFormatter(f) diff --git a/log/logrus_test.go b/observability/logger/logrus_test.go similarity index 68% rename from log/logrus_test.go rename to observability/logger/logrus_test.go index 03ee6e0..88ea888 100644 --- a/log/logrus_test.go +++ b/observability/logger/logrus_test.go @@ -1,4 +1,4 @@ -package log_test +package logger_test import ( "bufio" @@ -8,7 +8,7 @@ import ( "github.com/sirupsen/logrus" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" "github.com/stretchr/testify/assert" ) @@ -18,7 +18,7 @@ func TestLogrus(t *testing.T) { var b bytes.Buffer foo := bufio.NewWriter(&b) - logger := log.NewLogrus(log.LogrusWithLevel("debug"), log.LogrusWithWriter(foo), log.LogrusWithFormatter(&logrus.TextFormatter{ + logger := logger.NewLogrus(logger.LogrusWithLevel("debug"), logger.LogrusWithWriter(foo), logger.LogrusWithFormatter(&logrus.TextFormatter{ DisableTimestamp: true, })) logger.Info("hello world") @@ -30,7 +30,7 @@ func TestLogrus(t *testing.T) { var b bytes.Buffer foo := bufio.NewWriter(&b) - logger := log.NewLogrus(log.LogrusWithLevel("info"), log.LogrusWithWriter(foo), log.LogrusWithFormatter(&logrus.TextFormatter{ + logger := logger.NewLogrus(logger.LogrusWithLevel("info"), logger.LogrusWithWriter(foo), logger.LogrusWithFormatter(&logrus.TextFormatter{ DisableTimestamp: true, })) logger.Debug("hello world") @@ -42,7 +42,7 @@ func TestLogrus(t *testing.T) { var b bytes.Buffer foo := bufio.NewWriter(&b) - logger := log.NewLogrus(log.LogrusWithLevel("debug"), log.LogrusWithWriter(foo), log.LogrusWithFormatter(&logrus.TextFormatter{ + logger := logger.NewLogrus(logger.LogrusWithLevel("debug"), logger.LogrusWithWriter(foo), logger.LogrusWithFormatter(&logrus.TextFormatter{ DisableTimestamp: true, })) logger.Debug("current values", "day", 11, "month", "aug") @@ -54,7 +54,7 @@ func TestLogrus(t *testing.T) { var b bytes.Buffer foo := bufio.NewWriter(&b) - logger := log.NewLogrus(log.LogrusWithLevel("info"), log.LogrusWithWriter(foo), log.LogrusWithFormatter(&logrus.TextFormatter{ + logger := logger.NewLogrus(logger.LogrusWithLevel("info"), logger.LogrusWithWriter(foo), logger.LogrusWithFormatter(&logrus.TextFormatter{ DisableTimestamp: true, })) var err = fmt.Errorf("request failed") @@ -66,7 +66,7 @@ func TestLogrus(t *testing.T) { var b bytes.Buffer foo := bufio.NewWriter(&b) - logger := log.NewLogrus(log.LogrusWithLevel("info"), log.LogrusWithWriter(foo), log.LogrusWithFormatter(&logrus.TextFormatter{ + logger := logger.NewLogrus(logger.LogrusWithLevel("info"), logger.LogrusWithWriter(foo), logger.LogrusWithFormatter(&logrus.TextFormatter{ DisableTimestamp: true, })) var err = fmt.Errorf("request failed") diff --git a/log/noop.go b/observability/logger/noop.go similarity index 97% rename from log/noop.go rename to observability/logger/noop.go index 36b8b87..3d757bd 100644 --- a/log/noop.go +++ b/observability/logger/noop.go @@ -1,4 +1,4 @@ -package log +package logger import ( "io" diff --git a/log/zap.go b/observability/logger/zap.go similarity index 99% rename from log/zap.go rename to observability/logger/zap.go index 513875f..dc1084e 100644 --- a/log/zap.go +++ b/observability/logger/zap.go @@ -1,4 +1,4 @@ -package log +package logger import ( "context" diff --git a/log/zap_test.go b/observability/logger/zap_test.go similarity index 77% rename from log/zap_test.go rename to observability/logger/zap_test.go index f29fdd8..f5f99a9 100644 --- a/log/zap_test.go +++ b/observability/logger/zap_test.go @@ -1,4 +1,4 @@ -package log_test +package logger_test import ( "bufio" @@ -15,7 +15,7 @@ import ( "go.uber.org/zap" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" ) type zapBufWriter struct { @@ -41,7 +41,7 @@ func (m zapClock) NewTicker(duration time.Duration) *time.Ticker { return time.NewTicker(duration) } -func buildBufferedZapOption(writer io.Writer, t time.Time, bufWriterKey string) log.Option { +func buildBufferedZapOption(writer io.Writer, t time.Time, bufWriterKey string) logger.Option { config := zap.NewDevelopmentConfig() config.DisableCaller = true // register mock writer @@ -52,7 +52,7 @@ func buildBufferedZapOption(writer io.Writer, t time.Time, bufWriterKey string) customPath := fmt.Sprintf("%s:", bufWriterKey) config.OutputPaths = []string{customPath} - return log.ZapWithConfig(config, zap.WithClock(&zapClock{ + return logger.ZapWithConfig(config, zap.WithClock(&zapClock{ t: t, })) } @@ -64,7 +64,7 @@ func TestZap(t *testing.T) { var b bytes.Buffer bWriter := bufio.NewWriter(&b) - zapper := log.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) + zapper := logger.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) zapper.Info("hello", "wor", "ld") bWriter.Flush() @@ -75,9 +75,9 @@ func TestZap(t *testing.T) { var b bytes.Buffer bWriter := bufio.NewWriter(&b) - zapper := log.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) + zapper := logger.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) ctx := zapper.NewContext(context.Background()) - contextualLog := log.ZapFromContext(ctx) + contextualLog := logger.ZapFromContext(ctx) contextualLog.Info("hello", "wor", "ld") bWriter.Flush() @@ -88,11 +88,11 @@ func TestZap(t *testing.T) { var b bytes.Buffer bWriter := bufio.NewWriter(&b) - zapper := log.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) + zapper := logger.NewZap(buildBufferedZapOption(bWriter, mockedTime, randomString(10))) ctx := zapper.NewContext(context.Background()) - ctx = log.ZapContextWithFields(ctx, zap.Int("one", 1)) - ctx = log.ZapContextWithFields(ctx, zap.String("two", "two")) - log.ZapFromContext(ctx).Info("hello", "wor", "ld") + ctx = logger.ZapContextWithFields(ctx, zap.Int("one", 1)) + ctx = logger.ZapContextWithFields(ctx, zap.String("two", "two")) + logger.ZapFromContext(ctx).Info("hello", "wor", "ld") bWriter.Flush() assert.Equal(t, mockedTime.Format("2006-01-02T15:04:05.000Z0700")+"\tINFO\thello\t{\"one\": 1, \"two\": \"two\", \"wor\": \"ld\"}\n", b.String()) diff --git a/telemetry/opentelemetry.go b/observability/opentelemetry.go similarity index 93% rename from telemetry/opentelemetry.go rename to observability/opentelemetry.go index 2773527..e4fdbda 100644 --- a/telemetry/opentelemetry.go +++ b/observability/opentelemetry.go @@ -1,11 +1,11 @@ -package telemetry +package observability import ( "context" "fmt" "time" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" "go.opentelemetry.io/contrib/instrumentation/host" "go.opentelemetry.io/contrib/instrumentation/runtime" "go.opentelemetry.io/contrib/samplers/probability/consistent" @@ -29,7 +29,7 @@ type OpenTelemetryConfig struct { VerboseResourceLabelsEnabled bool `yaml:"verbose_resource_labels_enabled" mapstructure:"verbose_resource_labels_enabled" default:"false"` } -func initOTLP(ctx context.Context, cfg Config, logger log.Logger) (func(), error) { +func initOTLP(ctx context.Context, cfg Config, logger logger.Logger) (func(), error) { if !cfg.OpenTelemetry.Enabled { logger.Info("OpenTelemetry monitoring is disabled.") return noOp, nil @@ -78,7 +78,7 @@ func initOTLP(ctx context.Context, cfg Config, logger log.Logger) (func(), error } return shutdownProviders, nil } -func initGlobalMetrics(ctx context.Context, res *resource.Resource, cfg OpenTelemetryConfig, logger log.Logger) (func(), error) { +func initGlobalMetrics(ctx context.Context, res *resource.Resource, cfg OpenTelemetryConfig, logger logger.Logger) (func(), error) { exporter, err := otlpmetricgrpc.New(ctx, otlpmetricgrpc.WithEndpoint(cfg.CollectorAddr), otlpmetricgrpc.WithCompressor(gzip.Name), @@ -98,7 +98,7 @@ func initGlobalMetrics(ctx context.Context, res *resource.Resource, cfg OpenTele } }, nil } -func initGlobalTracer(ctx context.Context, res *resource.Resource, cfg OpenTelemetryConfig, logger log.Logger) (func(), error) { +func initGlobalTracer(ctx context.Context, res *resource.Resource, cfg OpenTelemetryConfig, logger logger.Logger) (func(), error) { exporter, err := otlptrace.New(ctx, otlptracegrpc.NewClient( otlptracegrpc.WithEndpoint(cfg.CollectorAddr), otlptracegrpc.WithInsecure(), diff --git a/telemetry/otelgrpc/otelgrpc.go b/observability/otelgrpc/otelgrpc.go similarity index 96% rename from telemetry/otelgrpc/otelgrpc.go rename to observability/otelgrpc/otelgrpc.go index 36ddd6c..bccd297 100644 --- a/telemetry/otelgrpc/otelgrpc.go +++ b/observability/otelgrpc/otelgrpc.go @@ -6,7 +6,6 @@ import ( "strings" "time" - "github.com/raystack/salt/utils" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" @@ -30,7 +29,7 @@ type Meter struct { attributes []attribute.KeyValue } type MeterOpts struct { - meterName string `default:"github.com/raystack/salt/telemetry/otelgrpc"` + meterName string `default:"github.com/raystack/salt/observability/otelgrpc"` } type Option func(*MeterOpts) @@ -78,7 +77,7 @@ func (m *Meter) RecordUnary(ctx context.Context, p UnaryParams) { resSize := GetProtoSize(p.Res) attrs := make([]attribute.KeyValue, len(m.attributes)) copy(attrs, m.attributes) - attrs = append(attrs, attribute.String("rpc.grpc.status_text", utils.StatusText(p.Err))) + attrs = append(attrs, attribute.String("rpc.grpc.status_text", StatusText(p.Err))) attrs = append(attrs, attribute.String("network.type", netTypeFromCtx(ctx))) attrs = append(attrs, ParseFullMethod(p.Method)...) m.duration.Record(ctx, @@ -94,7 +93,7 @@ func (m *Meter) RecordUnary(ctx context.Context, p UnaryParams) { func (m *Meter) RecordStream(ctx context.Context, start time.Time, method string, err error) { attrs := make([]attribute.KeyValue, len(m.attributes)) copy(attrs, m.attributes) - attrs = append(attrs, attribute.String("rpc.grpc.status_text", utils.StatusText(err))) + attrs = append(attrs, attribute.String("rpc.grpc.status_text", StatusText(err))) attrs = append(attrs, attribute.String("network.type", netTypeFromCtx(ctx))) attrs = append(attrs, ParseFullMethod(method)...) m.duration.Record(ctx, diff --git a/telemetry/otelgrpc/otelgrpc_test.go b/observability/otelgrpc/otelgrpc_test.go similarity index 96% rename from telemetry/otelgrpc/otelgrpc_test.go rename to observability/otelgrpc/otelgrpc_test.go index bc429b5..cc94ad5 100644 --- a/telemetry/otelgrpc/otelgrpc_test.go +++ b/observability/otelgrpc/otelgrpc_test.go @@ -4,7 +4,7 @@ import ( "reflect" "testing" - "github.com/raystack/salt/telemetry/otelgrpc" + "github.com/raystack/salt/observability/otelgrpc" "github.com/stretchr/testify/assert" "go.opentelemetry.io/otel/attribute" semconv "go.opentelemetry.io/otel/semconv/v1.20.0" diff --git a/utils/error_status.go b/observability/otelgrpc/status.go similarity index 98% rename from utils/error_status.go rename to observability/otelgrpc/status.go index 4f2118c..8f50583 100644 --- a/utils/error_status.go +++ b/observability/otelgrpc/status.go @@ -1,4 +1,4 @@ -package utils +package otelgrpc import ( "github.com/pkg/errors" @@ -38,6 +38,7 @@ func StatusCode(err error) codes.Code { } return codes.Unknown } + func StatusText(err error) string { return codeToStr[StatusCode(err)] } diff --git a/utils/error_status_test.go b/observability/otelgrpc/status_test.go similarity index 98% rename from utils/error_status_test.go rename to observability/otelgrpc/status_test.go index 6b7f09c..475f10c 100644 --- a/utils/error_status_test.go +++ b/observability/otelgrpc/status_test.go @@ -1,4 +1,4 @@ -package utils +package otelgrpc import ( "fmt" diff --git a/telemetry/otelhhtpclient/annotations.go b/observability/otelhttpclient/annotations.go similarity index 100% rename from telemetry/otelhhtpclient/annotations.go rename to observability/otelhttpclient/annotations.go diff --git a/telemetry/otelhhtpclient/http_transport.go b/observability/otelhttpclient/http_transport.go similarity index 97% rename from telemetry/otelhhtpclient/http_transport.go rename to observability/otelhttpclient/http_transport.go index f828fa7..e082e1d 100644 --- a/telemetry/otelhhtpclient/http_transport.go +++ b/observability/otelhttpclient/http_transport.go @@ -41,7 +41,7 @@ func NewHTTPTransport(baseTransport http.RoundTripper) http.RoundTripper { baseTransport = http.DefaultTransport } icl := &httpTransport{roundTripper: baseTransport} - icl.createMeasures(otel.Meter("github.com/raystack/salt/telemetry/otehttpclient")) + icl.createMeasures(otel.Meter("github.com/raystack/salt/observability/otelhttpclient")) return icl } func (tr *httpTransport) RoundTrip(req *http.Request) (*http.Response, error) { diff --git a/telemetry/otelhhtpclient/http_transport_test.go b/observability/otelhttpclient/http_transport_test.go similarity index 74% rename from telemetry/otelhhtpclient/http_transport_test.go rename to observability/otelhttpclient/http_transport_test.go index 425e620..b2a6aa2 100644 --- a/telemetry/otelhhtpclient/http_transport_test.go +++ b/observability/otelhttpclient/http_transport_test.go @@ -3,7 +3,7 @@ package otelhttpclient_test import ( "testing" - otelhttpclient "github.com/raystack/salt/telemetry/otelhhtpclient" + "github.com/raystack/salt/observability/otelhttpclient" "github.com/stretchr/testify/assert" ) diff --git a/telemetry/telemetry.go b/observability/telemetry.go similarity index 71% rename from telemetry/telemetry.go rename to observability/telemetry.go index 25ebe17..8bd682e 100644 --- a/telemetry/telemetry.go +++ b/observability/telemetry.go @@ -1,10 +1,10 @@ -package telemetry +package observability import ( "context" "time" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" ) const gracePeriod = 5 * time.Second @@ -15,7 +15,7 @@ type Config struct { OpenTelemetry OpenTelemetryConfig `yaml:"open_telemetry" mapstructure:"open_telemetry"` } -func Init(ctx context.Context, cfg Config, logger log.Logger) (cleanUp func(), err error) { +func Init(ctx context.Context, cfg Config, logger logger.Logger) (cleanUp func(), err error) { shutdown, err := initOTLP(ctx, cfg, logger) if err != nil { return noOp, err diff --git a/testing/dockertestx/postgres.go b/testing/dockertestx/postgres.go index 59e9343..ada933d 100644 --- a/testing/dockertestx/postgres.go +++ b/testing/dockertestx/postgres.go @@ -8,7 +8,7 @@ import ( "github.com/jmoiron/sqlx" "github.com/ory/dockertest/v3" "github.com/ory/dockertest/v3/docker" - "github.com/raystack/salt/log" + "github.com/raystack/salt/observability/logger" ) const ( @@ -19,7 +19,7 @@ const ( type dockerPostgresOption func(dpg *dockerPostgres) -func PostgresWithLogger(logger log.Logger) dockerPostgresOption { +func PostgresWithLogger(logger logger.Logger) dockerPostgresOption { return func(dpg *dockerPostgres) { dpg.logger = logger } @@ -69,7 +69,7 @@ func PostgresWithDockerPool(pool *dockertest.Pool) dockerPostgresOption { } type dockerPostgres struct { - logger log.Logger + logger logger.Logger network *dockertest.Network pool *dockertest.Pool username string