Skip to content

Commit

Permalink
Update interfaces and use generics
Browse files Browse the repository at this point in the history
  • Loading branch information
tonyhb committed Sep 16, 2024
1 parent 2d89ec3 commit afcda48
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,26 @@ type InitializerOpts struct {
Password string
}

func NewInitializer(ctx context.Context, opts InitializerOpts) replicator.SystemInitializer {
return initializer{opts: opts}
func NewInitializer(ctx context.Context, opts InitializerOpts) replicator.SystemInitializer[pgsetup.TestConnResult] {
// TODO: Immediatey

return initializer[pgsetup.TestConnResult]{opts: opts}
}

type initializer struct {
type initializer[T pgsetup.TestConnResult] struct {
opts InitializerOpts
}

// PerformInit perform setup for the replicator.
func (i initializer) PerformInit(ctx context.Context) (replicator.ConnectionResult, error) {
func (i initializer[T]) PerformInit(ctx context.Context) (pgsetup.TestConnResult, error) {
return pgsetup.Setup(ctx, pgsetup.SetupOpts{
AdminConfig: i.opts.AdminConfig,
Password: i.opts.Password,
})
}

// CheckInit checks setup for the replicator.
func (i initializer) CheckInit(ctx context.Context) (replicator.ConnectionResult, error) {
func (i initializer[T]) CheckInit(ctx context.Context) (pgsetup.TestConnResult, error) {
return pgsetup.Check(ctx, pgsetup.SetupOpts{
AdminConfig: i.opts.AdminConfig,
Password: i.opts.Password,
Expand Down
8 changes: 4 additions & 4 deletions pkg/replicator/pgreplicator/pgsetup/pgsetup.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type SetupOpts struct {
DisableCreatePublication bool
}

func Setup(ctx context.Context, opts SetupOpts) (replicator.ConnectionResult, error) {
func Setup(ctx context.Context, opts SetupOpts) (TestConnResult, error) {
conn, err := pgx.ConnectConfig(ctx, &opts.AdminConfig)
if err != nil {
return TestConnResult{}, err
Expand All @@ -69,7 +69,7 @@ func Setup(ctx context.Context, opts SetupOpts) (replicator.ConnectionResult, er
return setup.Setup(ctx)
}

func Check(ctx context.Context, opts SetupOpts) (replicator.ConnectionResult, error) {
func Check(ctx context.Context, opts SetupOpts) (TestConnResult, error) {
conn, err := pgx.ConnectConfig(ctx, &opts.AdminConfig)
if err != nil {
return TestConnResult{}, err
Expand All @@ -89,7 +89,7 @@ type setup struct {
res TestConnResult
}

func (s *setup) Check(ctx context.Context) (replicator.ConnectionResult, error) {
func (s *setup) Check(ctx context.Context) (TestConnResult, error) {
chain := []func(ctx context.Context) error{
s.checkWAL,
s.checkUser,
Expand All @@ -106,7 +106,7 @@ func (s *setup) Check(ctx context.Context) (replicator.ConnectionResult, error)
return s.res, nil
}

func (s *setup) Setup(ctx context.Context) (replicator.ConnectionResult, error) {
func (s *setup) Setup(ctx context.Context) (TestConnResult, error) {
chain := []func(ctx context.Context) error{}

if !s.opts.DisableCreateUser {
Expand Down
6 changes: 3 additions & 3 deletions pkg/replicator/replicator.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ type ConnectionStepResult struct {
Complete bool `json:"complete"`
}

type SystemInitializer interface {
type SystemInitializer[T ConnectionResult] interface {
// PerformInit perform setup for the replicator.
PerformInit(ctx context.Context) (ConnectionResult, error)
PerformInit(ctx context.Context) (T, error)

// CheckInit ensures that the setup for the replicator is complete.
CheckInit(ctx context.Context) (ConnectionResult, error)
CheckInit(ctx context.Context) (T, error)
}

0 comments on commit afcda48

Please sign in to comment.