feat(backend): analytics - common service builder with object storage

This commit is contained in:
Shekar Siri 2024-10-29 11:02:31 +01:00
parent 55d705bd33
commit 0f62a291c3
2 changed files with 9 additions and 3 deletions

View file

@ -34,6 +34,7 @@ func main() {
services, err := analytics.NewServiceBuilder(log).
WithDatabase(pgConn).
WithJWTSecret(cfg.JWTSecret, cfg.JWTSpotSecret).
WithObjectStorage(&cfg.ObjectsConfig).
Build()
if err != nil {

View file

@ -2,11 +2,13 @@ package common
import (
"errors"
objConfig "openreplay/backend/internal/config/objectstorage"
"openreplay/backend/pkg/common/api/auth"
"openreplay/backend/pkg/db/postgres/pool"
"openreplay/backend/pkg/flakeid"
"openreplay/backend/pkg/logger"
"openreplay/backend/pkg/objectstorage"
"openreplay/backend/pkg/objectstorage/store"
)
// ServicesBuilder struct to hold service components
@ -35,8 +37,12 @@ func (b *ServicesBuilder) WithFlaker(flaker *flakeid.Flaker) *ServicesBuilder {
}
// WithObjectStorage sets the Object Storage component
func (b *ServicesBuilder) WithObjectStorage(objStorage objectstorage.ObjectStorage) *ServicesBuilder {
b.objStorage = objStorage
func (b *ServicesBuilder) WithObjectStorage(config *objConfig.ObjectsConfig) *ServicesBuilder {
objStore, err := store.NewStore(config)
if err != nil {
return nil
}
b.objStorage = objStore
return b
}
@ -70,7 +76,6 @@ func (b *ServicesBuilder) WithJWTSecret(jwtSecret string, extraSecret ...string)
// Build finalizes the service setup and returns an instance of ServicesBuilder with all components
func (b *ServicesBuilder) Build() (*ServicesBuilder, error) {
// Initialize default components if they aren't provided
// Check if database pool is provided
if b.pgconn == nil {
return nil, errors.New("database connection pool is required")