diff --git a/backend/internal/http/router/handlers-web.go b/backend/internal/http/router/handlers-web.go index beea8a7c4..21f0f3b3c 100644 --- a/backend/internal/http/router/handlers-web.go +++ b/backend/internal/http/router/handlers-web.go @@ -168,12 +168,11 @@ func (e *Router) startSessionHandlerWeb(w http.ResponseWriter, r *http.Request) dice := byte(rand.Intn(100)) // [0, 100) // Use condition rate if it's set if req.Condition != "" { - rate, err := e.services.Conditions.GetRate(p.ProjectID, req.Condition) + rate, err := e.services.Conditions.GetRate(p.ProjectID, req.Condition, int(p.SampleRate)) if err != nil { log.Printf("can't get condition rate: %s", err) } else { - log.Printf("condition rate: %d", rate) - p.SampleRate = byte(rate) // why byte? + p.SampleRate = byte(rate) } } else { log.Printf("project sample rate: %d", p.SampleRate) diff --git a/backend/pkg/conditions/conditions.go b/backend/pkg/conditions/conditions.go index 5f14b2f2c..9e6bd0e11 100644 --- a/backend/pkg/conditions/conditions.go +++ b/backend/pkg/conditions/conditions.go @@ -4,10 +4,16 @@ import ( "openreplay/backend/pkg/db/postgres/pool" ) -type Conditions interface{} +type Conditions interface { + GetRate(projectID uint32, condition string, def int) (int, error) +} type conditionsImpl struct{} +func (c *conditionsImpl) GetRate(projectID uint32, condition string, def int) (int, error) { + return def, nil +} + func New(db pool.Pool) Conditions { return &conditionsImpl{} } diff --git a/ee/backend/pkg/conditions/conditions.go b/ee/backend/pkg/conditions/conditions.go index 9c098a319..59985079a 100644 --- a/ee/backend/pkg/conditions/conditions.go +++ b/ee/backend/pkg/conditions/conditions.go @@ -8,7 +8,7 @@ import ( type Conditions interface { Get(projectID uint32) (*Response, error) - GetRate(projectID uint32, condition string) (int, error) + GetRate(projectID uint32, condition string, def int) (int, error) } type conditionsImpl struct { @@ -108,7 +108,7 @@ func (c *conditionsImpl) Get(projectID uint32) (*Response, error) { return &Response{Conditions: conditions}, err } -func (c *conditionsImpl) GetRate(projectID uint32, condition string) (int, error) { +func (c *conditionsImpl) GetRate(projectID uint32, condition string, def int) (int, error) { proj, ok := c.cache[projectID] if ok { rate, ok := proj[condition]