Skip to content

Commit

Permalink
feat: migrate services to use cases (1st iteration) (#16)
Browse files Browse the repository at this point in the history
* feat: remove entity setters and getters

* feat: migrate api endpoints to use use cases

* chore: upgrade dependencies

* feat: migrate reporting to use cases

* feat: bump dependencies

* feat: migrate browsing to usecases
  • Loading branch information
sergeii authored Feb 4, 2024
1 parent 5b7a41c commit f6f24b9
Show file tree
Hide file tree
Showing 115 changed files with 6,694 additions and 5,384 deletions.
8 changes: 4 additions & 4 deletions cmd/swat4master/application/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@ package application
import (
"go.uber.org/fx"

"github.com/sergeii/swat4master/cmd/swat4master/clock"
"github.com/sergeii/swat4master/cmd/swat4master/container"
"github.com/sergeii/swat4master/cmd/swat4master/logging"
"github.com/sergeii/swat4master/cmd/swat4master/persistence"
"github.com/sergeii/swat4master/cmd/swat4master/timing"
"github.com/sergeii/swat4master/internal/services/discovery/finding"
"github.com/sergeii/swat4master/internal/services/monitoring"
"github.com/sergeii/swat4master/internal/services/probe"
"github.com/sergeii/swat4master/internal/services/server"
"github.com/sergeii/swat4master/internal/validation"
)

var Module = fx.Module("application",
fx.Provide(logging.Provide),
fx.Provide(timing.Provide),
fx.Provide(clock.Provide),
fx.Invoke(logging.NoGlobal),
fx.Provide(validation.New),
fx.Provide(persistence.Provide),
fx.Provide(monitoring.NewMetricService),
fx.Provide(finding.NewService),
fx.Provide(server.NewService),
fx.Provide(probe.NewService),
container.Module,
)
9 changes: 9 additions & 0 deletions cmd/swat4master/clock/clock.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package clock

import (
"github.com/jonboulle/clockwork"
)

func Provide() clockwork.Clock {
return clockwork.NewRealClock()
}
9 changes: 5 additions & 4 deletions cmd/swat4master/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ type Config struct {

ExporterListenAddr string

DiscoveryRefreshInterval time.Duration
DiscoveryRefreshInterval time.Duration

DiscoveryRevivalInterval time.Duration
DiscoveryRevivalScope time.Duration
DiscoveryRevivalCountdown time.Duration
Expand Down Expand Up @@ -143,19 +144,19 @@ func Provide() Config {
)
flag.DurationVar(
&cfg.ProbePollSchedule, "probe.schedule", time.Millisecond*50,
"Defines how often the discovery queue is checked for new targets",
"Defines how often the discovery queue is checked for new probes",
)
flag.DurationVar(
&cfg.ProbeTimeout, "probe.timeout", time.Second,
"Limits the maximum time a discovery target will be waited for a complete response",
"Limits the maximum time a discovery probe will be waited for a complete response",
)
flag.IntVar(
&cfg.ProbeRetries, "probe.retries", 5,
"Defines how many times a failed probe is retried ",
)
flag.IntVar(
&cfg.ProbeConcurrency, "probe.concurrency", 25,
"Limits how many discovery targets can be probed simultaneously",
"Limits how many discovery probes can be ran simultaneously",
)
flag.DurationVar(
&cfg.CleanRetention, "clean.retention", time.Hour,
Expand Down
49 changes: 49 additions & 0 deletions cmd/swat4master/container/container.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package container

import (
"go.uber.org/fx"

"github.com/sergeii/swat4master/internal/core/usecases/addserver"
"github.com/sergeii/swat4master/internal/core/usecases/getserver"
"github.com/sergeii/swat4master/internal/core/usecases/listservers"
"github.com/sergeii/swat4master/internal/core/usecases/removeserver"
"github.com/sergeii/swat4master/internal/core/usecases/renewserver"
"github.com/sergeii/swat4master/internal/core/usecases/reportserver"
)

type Container struct {
GetServer getserver.UseCase
AddServer addserver.UseCase
ListServers listservers.UseCase
ReportServer reportserver.UseCase
RenewServer renewserver.UseCase
RemoveServer removeserver.UseCase
}

func New(
getServerUseCase getserver.UseCase,
addServerUseCase addserver.UseCase,
listServersUseCase listservers.UseCase,
reportServerUseCase reportserver.UseCase,
renewServerUseCase renewserver.UseCase,
removeServerUseCase removeserver.UseCase,
) Container {
return Container{
GetServer: getServerUseCase,
AddServer: addServerUseCase,
ListServers: listServersUseCase,
ReportServer: reportServerUseCase,
RenewServer: renewServerUseCase,
RemoveServer: removeServerUseCase,
}
}

var Module = fx.Module("container",
fx.Provide(getserver.New),
fx.Provide(addserver.New),
fx.Provide(listservers.New),
fx.Provide(reportserver.New),
fx.Provide(renewserver.New),
fx.Provide(removeserver.New),
fx.Provide(New),
)
9 changes: 6 additions & 3 deletions cmd/swat4master/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ import (
"github.com/sergeii/swat4master/cmd/swat4master/modules/cleaner"
"github.com/sergeii/swat4master/cmd/swat4master/modules/collector"
"github.com/sergeii/swat4master/cmd/swat4master/modules/exporter"
"github.com/sergeii/swat4master/cmd/swat4master/modules/finder"
"github.com/sergeii/swat4master/cmd/swat4master/modules/prober"
"github.com/sergeii/swat4master/cmd/swat4master/modules/refresher"
"github.com/sergeii/swat4master/cmd/swat4master/modules/reporter"
"github.com/sergeii/swat4master/cmd/swat4master/modules/reviver"

"github.com/sergeii/swat4master/cmd/swat4master/application"
)
Expand All @@ -26,7 +27,8 @@ func main() {
app := fx.New(
fx.Provide(config.Provide),
application.Module,
finder.Module,
refresher.Module,
reviver.Module,
prober.Module,
browser.Module,
reporter.Module,
Expand Down Expand Up @@ -56,7 +58,8 @@ func main() {
}),
fx.Invoke(func(
logger *zerolog.Logger,
_ *finder.Finder,
_ *refresher.Refresher,
_ *reviver.Reviver,
_ *prober.Prober,
_ *browser.Browser,
_ *reporter.Reporter,
Expand Down
3 changes: 2 additions & 1 deletion cmd/swat4master/modules/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"go.uber.org/fx"

"github.com/sergeii/swat4master/cmd/swat4master/config"
"github.com/sergeii/swat4master/internal/rest"
"github.com/sergeii/swat4master/internal/rest/api"
http "github.com/sergeii/swat4master/pkg/http/server"
)
Expand Down Expand Up @@ -74,7 +75,7 @@ var Module = fx.Module("api",
api.New,
),
fx.Provide(
NewRouter,
rest.NewRouter,
),
fx.Provide(
NewAPI,
Expand Down
54 changes: 0 additions & 54 deletions cmd/swat4master/modules/api/api_test.go

This file was deleted.

34 changes: 6 additions & 28 deletions cmd/swat4master/modules/browser/browser.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,20 @@ import (
"context"
"net"

"github.com/benbjohnson/clock"
"github.com/rs/zerolog"
"go.uber.org/fx"

"github.com/sergeii/swat4master/cmd/swat4master/config"
"github.com/sergeii/swat4master/internal/services/master/browsing"
"github.com/sergeii/swat4master/internal/services/monitoring"
"github.com/sergeii/swat4master/internal/browser"
tcp "github.com/sergeii/swat4master/pkg/tcp/server"
)

type Browser struct{}

type Handler struct {
service *browsing.Service
metrics *monitoring.MetricService
clock clock.Clock
logger *zerolog.Logger
}

func newHandler(
service *browsing.Service,
metrics *monitoring.MetricService,
clock clock.Clock,
logger *zerolog.Logger,
) *Handler {
return &Handler{service, metrics, clock, logger}
}

func NewBrowser(
lc fx.Lifecycle,
shutdowner fx.Shutdowner,
handler *Handler,
handler browser.Handler,
cfg config.Config,
logger *zerolog.Logger,
) (*Browser, error) {
Expand Down Expand Up @@ -87,22 +69,18 @@ func NewBrowser(
return &Browser{}, nil
}

var Module = fx.Module("reporter",
var Module = fx.Module("browser",
fx.Provide(
fx.Private,
func(cfg config.Config) browsing.ServiceOpts {
return browsing.ServiceOpts{
func(cfg config.Config) browser.HandlerOpts {
return browser.HandlerOpts{
Liveness: cfg.BrowserServerLiveness,
}
},
),
fx.Provide(
fx.Private,
browsing.NewService,
),
fx.Provide(
fx.Private,
newHandler,
browser.NewHandler,
),
fx.Provide(NewBrowser),
)
Loading

0 comments on commit f6f24b9

Please sign in to comment.