36 lines
999 B
Go
36 lines
999 B
Go
package spot
|
|
|
|
import (
|
|
"openreplay/backend/internal/config/spot"
|
|
"openreplay/backend/pkg/common"
|
|
"openreplay/backend/pkg/logger"
|
|
"openreplay/backend/pkg/spot/service"
|
|
"openreplay/backend/pkg/spot/transcoder"
|
|
)
|
|
|
|
type ServicesBuilder struct {
|
|
*common.ServicesBuilder
|
|
Spots service.Spots
|
|
Keys service.Keys
|
|
Transcoder transcoder.Transcoder
|
|
cfg *spot.Config
|
|
}
|
|
|
|
func NewServiceBuilder(log logger.Logger, cfg *spot.Config) (*ServicesBuilder, error) {
|
|
builder := common.NewServiceBuilder(log).
|
|
WithDatabase(cfg.Postgres.String()).
|
|
WithAuth(cfg.JWTSecret, cfg.JWTSpotSecret).
|
|
WithObjectStorage(&cfg.ObjectsConfig)
|
|
|
|
keys := service.NewKeys(log, builder.Pgconn)
|
|
spots := service.NewSpots(log, builder.Pgconn, builder.Flaker)
|
|
tc := transcoder.NewTranscoder(cfg, log, builder.ObjStorage, builder.Pgconn, spots)
|
|
|
|
return &ServicesBuilder{
|
|
ServicesBuilder: builder,
|
|
Spots: spots,
|
|
Keys: keys,
|
|
Transcoder: tc,
|
|
cfg: cfg,
|
|
}, nil
|
|
}
|