* feat(ui/tracker): start tag n watch * fix(tracker): test coverage, fix some watcher api * fix(tracker): add intersectionobserver, adjust tests * feat(tracker): relay + apollo plugins * feat(ui): tags search * feat(ui): tags name edit * feat(ui): tags search icon * feat(ui): icons for tabs in player * feat(ui): save and find button * feat(tracker): save tags in session storage (just in case) * feat(ui): improve loading * feat(ui): fix icon names gen * feat(ui): fix typo * feat(backend): added TagAndWatch backend support * feat(backend): use msgIndex as a seqIndex * feat(backend): try to use truncSqlIdx for seq_index * feat(backend): added tags cache and tags filter to DB service * feat(backend): removed debug logs --------- Co-authored-by: nick-delirium <nikita@openreplay.com>
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package services
|
|
|
|
import (
|
|
"log"
|
|
"openreplay/backend/internal/config/http"
|
|
"openreplay/backend/internal/http/geoip"
|
|
"openreplay/backend/internal/http/uaparser"
|
|
"openreplay/backend/pkg/db/postgres/pool"
|
|
"openreplay/backend/pkg/db/redis"
|
|
"openreplay/backend/pkg/featureflags"
|
|
"openreplay/backend/pkg/flakeid"
|
|
"openreplay/backend/pkg/objectstorage"
|
|
"openreplay/backend/pkg/objectstorage/store"
|
|
"openreplay/backend/pkg/projects"
|
|
"openreplay/backend/pkg/queue/types"
|
|
"openreplay/backend/pkg/sessions"
|
|
"openreplay/backend/pkg/tags"
|
|
"openreplay/backend/pkg/token"
|
|
"openreplay/backend/pkg/uxtesting"
|
|
)
|
|
|
|
type ServicesBuilder struct {
|
|
Projects projects.Projects
|
|
Sessions sessions.Sessions
|
|
FeatureFlags featureflags.FeatureFlags
|
|
Producer types.Producer
|
|
Flaker *flakeid.Flaker
|
|
UaParser *uaparser.UAParser
|
|
GeoIP geoip.GeoParser
|
|
Tokenizer *token.Tokenizer
|
|
ObjStorage objectstorage.ObjectStorage
|
|
UXTesting uxtesting.UXTesting
|
|
Tags tags.Tags
|
|
}
|
|
|
|
func New(cfg *http.Config, producer types.Producer, pgconn pool.Pool, redis *redis.Client) (*ServicesBuilder, error) {
|
|
projs := projects.New(pgconn, redis)
|
|
// ObjectStorage client to generate pre-signed upload urls
|
|
objStore, err := store.NewStore(&cfg.ObjectsConfig)
|
|
if err != nil {
|
|
log.Fatalf("can't init object storage: %s", err)
|
|
}
|
|
return &ServicesBuilder{
|
|
Projects: projs,
|
|
Sessions: sessions.New(pgconn, projs, redis),
|
|
FeatureFlags: featureflags.New(pgconn),
|
|
Producer: producer,
|
|
Tokenizer: token.NewTokenizer(cfg.TokenSecret),
|
|
UaParser: uaparser.NewUAParser(cfg.UAParserFile),
|
|
GeoIP: geoip.New(cfg.MaxMinDBFile),
|
|
Flaker: flakeid.NewFlaker(cfg.WorkerID),
|
|
ObjStorage: objStore,
|
|
UXTesting: uxtesting.New(pgconn),
|
|
Tags: tags.New(pgconn),
|
|
}, nil
|
|
}
|