Skip to content

Commit

Permalink
fix decisions stats query
Browse files Browse the repository at this point in the history
  • Loading branch information
Pascal-Delange committed Dec 12, 2024
1 parent b38692b commit 3c1220e
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 20 deletions.
45 changes: 31 additions & 14 deletions repositories/decisions_repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,29 +84,46 @@ func (repo *MarbleDbRepository) DecisionWithRuleExecutionsById(ctx context.Conte
return decisions[0], nil
}

func (repo *MarbleDbRepository) DecisionsByOutcomeAndScore(ctx context.Context, exec Executor,
scenarioID string, begin, end time.Time,
func (repo *MarbleDbRepository) DecisionsByOutcomeAndScore(
ctx context.Context,
exec Executor,
organizationId string,
begin, end time.Time,
) ([]models.DecisionsByVersionByOutcome, error) {
decisionQuery := squirrel.StatementBuilder.
Select("outcome, scenario_version, score").
From(dbmodels.TABLE_DECISIONS).Where(squirrel.GtOrEq{
"created_at": begin,
}).Where(squirrel.LtOrEq{
"created_at": end,
})
From(dbmodels.TABLE_DECISIONS).
Where(squirrel.GtOrEq{
"created_at": begin,
}).
Where(squirrel.LtOrEq{
"created_at": end,
}).
Where(squirrel.Eq{
"org_id": organizationId,
})
phantomDecisionQuery := squirrel.StatementBuilder.
Select("outcome, scenario_version, score").
From(dbmodels.TABLE_PHANTOM_DECISIONS).Where(squirrel.GtOrEq{
"created_at": begin,
}).Where(squirrel.LtOrEq{
"created_at": end,
})
From(dbmodels.TABLE_PHANTOM_DECISIONS).
Where(squirrel.GtOrEq{
"created_at": begin,
}).
Where(squirrel.LtOrEq{
"created_at": end,
}).
Where(squirrel.Eq{
"org_id": organizationId,
})
query, err := WithUnionAll(decisionQuery, phantomDecisionQuery)
if err != nil {
return nil, err
}
finalQuery := NewQueryBuilder().Select("q.scenario_version, q.outcome, q.score, Count(q.outcome) as total").
FromSelect(query, "q").GroupBy("scenario_version, outcome, score").PlaceholderFormat(squirrel.Dollar)
finalQuery := NewQueryBuilder().
Select("q.scenario_version, q.outcome, q.score, Count(q.outcome) as total").
FromSelect(query, "q").
GroupBy("scenario_version, outcome, score").
PlaceholderFormat(squirrel.Dollar)

return SqlToListOfRow(ctx,
exec,
finalQuery,
Expand Down
16 changes: 10 additions & 6 deletions usecases/decision_usecase.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,12 @@ type DecisionUsecaseRepository interface {

GetScenarioById(ctx context.Context, exec repositories.Executor, scenarioId string) (models.Scenario, error)

DecisionsByOutcomeAndScore(ctx context.Context, exec repositories.Executor, scenarioId string, begin, end time.Time) (
[]models.DecisionsByVersionByOutcome, error)
DecisionsByOutcomeAndScore(
ctx context.Context,
exec repositories.Executor,
organizationId string,
begin, end time.Time,
) ([]models.DecisionsByVersionByOutcome, error)

ListScenariosOfOrganization(ctx context.Context, exec repositories.Executor, organizationId string) ([]models.Scenario, error)

Expand Down Expand Up @@ -123,14 +127,14 @@ func (usecase *DecisionUsecase) GetDecision(ctx context.Context, decisionId stri
func (usecase *DecisionUsecase) GetDecisionsByOutcomeAndScore(ctx context.Context,
testrunId string,
) ([]models.DecisionsByVersionByOutcome, error) {
testrun, errTestRun := usecase.scenarioTestRunRepository.GetTestRunByID(ctx,
usecase.executorFactory.NewExecutor(), testrunId)
exec := usecase.executorFactory.NewExecutor()
testrun, errTestRun := usecase.scenarioTestRunRepository.GetTestRunByID(ctx, exec, testrunId)
if errTestRun != nil {
return nil, errTestRun
}

decisions, err := usecase.repository.DecisionsByOutcomeAndScore(ctx,
usecase.executorFactory.NewExecutor(), testrun.ScenarioId, testrun.CreatedAt, testrun.ExpiresAt)
decisions, err := usecase.repository.DecisionsByOutcomeAndScore(ctx, exec,
testrun.OrganizationId, testrun.CreatedAt, testrun.ExpiresAt)
if err != nil {
return []models.DecisionsByVersionByOutcome{}, err
}
Expand Down

0 comments on commit 3c1220e

Please sign in to comment.