Skip to content

Commit d87876d

Browse files
committed
dry a bit
1 parent 374df93 commit d87876d

File tree

17 files changed

+66
-97
lines changed

17 files changed

+66
-97
lines changed

packages/core/src/data-access/conversations/fetchConversation.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ import { OkType, Result } from '../../lib/Result'
55
import { spans } from '../../schema/models/spans'
66
import { Workspace } from '../../schema/models/types/Workspace'
77
import { conversationAggregateFields } from './shared'
8-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
8+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
99
import { fetchConversation as chFetchConversation } from '../../queries/clickhouse/spans/fetchConversation'
1010

11-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
12-
1311
export type Conversation = OkType<typeof fetchConversation>
1412

1513
export async function fetchConversation(
@@ -24,13 +22,10 @@ export async function fetchConversation(
2422
},
2523
db = database,
2624
) {
27-
const clickhouseEnabledResult = await isFeatureEnabledByName(
25+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
2826
workspace.id,
29-
CLICKHOUSE_SPANS_READ_FLAG,
3027
db,
3128
)
32-
const shouldUseClickHouse =
33-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
3429

3530
if (shouldUseClickHouse) {
3631
const result = await chFetchConversation({

packages/core/src/data-access/conversations/fetchConversations.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,9 @@ import {
2121
shouldFallbackToAllTime,
2222
} from '../../services/spans/defaultCreatedAtWindow'
2323
import { conversationAggregateFields } from './shared'
24-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
24+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
2525
import { fetchConversations as chFetchConversations } from '../../queries/clickhouse/spans/fetchConversations'
2626

27-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
28-
2927
export type ConversationFilters = {
3028
commitUuids: string[]
3129
experimentUuids?: string[]
@@ -190,13 +188,10 @@ export async function fetchConversations(
190188
}: FetchConversationsParams,
191189
db = database,
192190
) {
193-
const clickhouseEnabledResult = await isFeatureEnabledByName(
191+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
194192
workspace.id,
195-
CLICKHOUSE_SPANS_READ_FLAG,
196193
db,
197194
)
198-
const shouldUseClickHouse =
199-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
200195

201196
if (shouldUseClickHouse) {
202197
const normalizedCreatedAt = normalizeCreatedAtRange(filters.createdAt)

packages/core/src/data-access/spans/getSpansByDocument.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { Commit } from '../../schema/models/types/Commit'
2727
import { DocumentVersion } from '../../schema/models/types/DocumentVersion'
2828
import { Workspace } from '../../schema/models/types/Workspace'
2929
import { Cursor } from '../../schema/types'
30-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
30+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
3131
import { getSpansByDocument as chGetSpansByDocument } from '../../queries/clickhouse/spans/getByDocument'
3232

3333
/**
@@ -58,13 +58,10 @@ export async function getSpansByDocument(
5858
},
5959
db = database,
6060
) {
61-
const clickhouseEnabledResult = await isFeatureEnabledByName(
61+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
6262
workspace.id,
63-
'clickhouse-spans-read',
6463
db,
6564
)
66-
const shouldUseClickHouse =
67-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
6865

6966
const commitsRepo = new CommitsRepository(workspace.id, db)
7067
const commitHistory = await commitsRepo.getCommitsHistory({ commit })

packages/core/src/data-access/traces/countByDocument.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@ import { Workspace } from '../../schema/models/types/Workspace'
55
import { Commit } from '../../schema/models/types/Commit'
66
import { CommitsRepository } from '../../repositories'
77
import { LogSources } from '@latitude-data/constants'
8-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
8+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
99
import { countDistinctTracesByDocument } from '../../queries/clickhouse/spans/countByDocument'
1010

11-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
12-
1311
export async function countTracesByDocument(
1412
{
1513
workspace,
@@ -24,13 +22,10 @@ export async function countTracesByDocument(
2422
},
2523
db = database,
2624
) {
27-
const clickhouseEnabledResult = await isFeatureEnabledByName(
25+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
2826
workspace.id,
29-
CLICKHOUSE_SPANS_READ_FLAG,
3027
db,
3128
)
32-
const shouldUseClickHouse =
33-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
3429

3530
const commitsRepo = new CommitsRepository(workspace.id, db)
3631
const commits = await commitsRepo.getCommitsHistory({ commit })

packages/core/src/data-access/traces/hasProductionTraces.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ import { and, eq, inArray, sql, SQL } from 'drizzle-orm'
22
import { database } from '../../client'
33
import { MAIN_SPAN_TYPES, RUN_SOURCES, RunSourceGroup } from '../../constants'
44
import { spans } from '../../schema/models/spans'
5-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
5+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
66
import { hasProductionTraces as chHasProductionTraces } from '../../queries/clickhouse/spans/hasProductionTraces'
77

8-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
9-
108
export async function hasProductionTraces(
119
{
1210
workspaceId,
@@ -17,13 +15,10 @@ export async function hasProductionTraces(
1715
},
1816
db = database,
1917
): Promise<boolean> {
20-
const clickhouseEnabledResult = await isFeatureEnabledByName(
18+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
2119
workspaceId,
22-
CLICKHOUSE_SPANS_READ_FLAG,
2320
db,
2421
)
25-
const shouldUseClickHouse =
26-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
2722

2823
if (shouldUseClickHouse) {
2924
return chHasProductionTraces({ workspaceId, projectId })

packages/core/src/data-access/weeklyEmail/logs/index.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ import { Workspace } from '../../../schema/models/types/Workspace'
1717
import { SureDateRange } from '../../../constants'
1818
import { getDateRangeOrLastWeekRange } from '../utils'
1919
import { hasProductionTraces } from '../../traces/hasProductionTraces'
20-
import { isFeatureEnabledByName } from '../../../services/workspaceFeatures/isFeatureEnabledByName'
20+
import { isClickHouseSpansReadEnabled } from '../../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
2121
import {
2222
getGlobalLogsStats as chGetGlobalLogsStats,
2323
getTopProjectsLogsStats as chGetTopProjectsLogsStats,
2424
} from '../../../queries/clickhouse/spans/weeklyEmailLogs'
2525

26-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
27-
2826
async function getGlobalLogsStats(
2927
{
3028
workspace,
@@ -191,13 +189,10 @@ export async function getLogsData(
191189
},
192190
db = database,
193191
): Promise<LogStats> {
194-
const clickhouseEnabledResult = await isFeatureEnabledByName(
192+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
195193
workspace.id,
196-
CLICKHOUSE_SPANS_READ_FLAG,
197194
db,
198195
)
199-
const shouldUseClickHouse =
200-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
201196

202197
const usedInProduction = await hasProductionTraces(
203198
{ workspaceId: workspace.id },

packages/core/src/queries/issues/getAnnotationsProgress.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ import { evaluationResultsV2 } from '../../schema/models/evaluationResultsV2'
1515
import { evaluationVersions } from '../../schema/models/evaluationVersions'
1616
import { database } from '../../client'
1717
import { Result } from '../../lib/Result'
18-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
18+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
1919
import { getSpansCountForAnnotationsProgress as chGetSpansCountForAnnotationsProgress } from '../../queries/clickhouse/spans/getAnnotationsProgress'
2020

21-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
22-
21+
// These are the log sources we consider for annotations progress by default
22+
// We don't consider Experiment logs as they don't move the centroid
2323
const DEFAULT_LOG_SOURCES = [
2424
...RUN_SOURCES[RunSourceGroup.Production],
2525
LogSources.Playground,
@@ -129,12 +129,10 @@ export async function getAnnotationsProgress(
129129

130130
const { commitUuids, commitIds } = commitsResult.value
131131

132-
const clickhouseEnabledResult = await isFeatureEnabledByName(
132+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
133133
workspace.id,
134-
CLICKHOUSE_SPANS_READ_FLAG,
134+
db,
135135
)
136-
const shouldUseClickHouse =
137-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
138136

139137
let totalRuns: number
140138

packages/core/src/queries/issues/getSpansWithoutIssues.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,31 @@ import { Commit } from '../../schema/models/types/Commit'
3131
import { DocumentVersion } from '../../schema/models/types/DocumentVersion'
3232
import { Workspace } from '../../schema/models/types/Workspace'
3333
import { Cursor } from '../../schema/types'
34-
import { isFeatureEnabledByName } from '../../services/workspaceFeatures/isFeatureEnabledByName'
34+
import { isClickHouseSpansReadEnabled } from '../../services/workspaceFeatures/isClickHouseSpansReadEnabled'
3535
import {
3636
getSpansWithoutIssues as chGetSpansWithoutIssues,
3737
getSpansWithActiveIssues as chGetSpansWithActiveIssues,
3838
getSpansWithFailedResults as chGetSpansWithFailedResults,
3939
getSpansWithPassedResults as chGetSpansWithPassedResults,
4040
} from '../../queries/clickhouse/spans/getSpansWithoutIssues'
4141

42-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
43-
42+
/**
43+
* Fetches spans that have no issues associated through evaluation results,
44+
* filtered by document and commit history.
45+
*
46+
* Automatically excludes optimization-related spans:
47+
* - Spans with source 'optimization'
48+
* - Spans with source 'experiment' where the experiment is linked
49+
* to an optimization (via baselineExperimentId or optimizedExperimentId)
50+
*
51+
* @param excludeFailedResults - When true, excludes spans with failed or errored evaluation results.
52+
* @param requirePassedResults - When true, only returns spans with at least one
53+
* evaluation result where hasPassed IS TRUE.
54+
* @param requirePassedAnnotations - When true, implies requirePassedResults and
55+
* only returns spans with at least one human evaluation result where hasPassed IS TRUE.
56+
* @param spanTypes - Array of span types to include. Defaults to all main span types.
57+
* Pass [SpanType.Prompt] for optimizer use cases.
58+
*/
4459
export async function getSpansWithoutIssues(
4560
{
4661
workspace,
@@ -77,13 +92,10 @@ export async function getSpansWithoutIssues(
7792
})
7893
}
7994

80-
const clickhouseEnabledResult = await isFeatureEnabledByName(
95+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
8196
workspace.id,
82-
CLICKHOUSE_SPANS_READ_FLAG,
8397
db,
8498
)
85-
const shouldUseClickHouse =
86-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
8799

88100
// Get optimization experiment UUIDs (still from PostgreSQL)
89101
const optimizationExperimentUuids = await db

packages/core/src/repositories/experimentsRepository.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@ import {
2424
type Experiment,
2525
} from '../schema/models/types/Experiment'
2626
import Repository from './repositoryV2'
27-
import { isFeatureEnabledByName } from '../services/workspaceFeatures/isFeatureEnabledByName'
27+
import { isClickHouseSpansReadEnabled } from '../services/workspaceFeatures/isClickHouseSpansReadEnabled'
2828
import { getExperimentRunMetadata as chGetExperimentRunMetadata } from '../queries/clickhouse/spans/getExperimentRunMetadata'
2929

30-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
31-
3230
export class ExperimentsRepository extends Repository<Experiment> {
3331
get scopeFilter() {
3432
return eq(experiments.workspaceId, this.workspaceId)
@@ -281,13 +279,10 @@ export class ExperimentsRepository extends Repository<Experiment> {
281279
async getRunMetadata(
282280
uuid: string,
283281
): PromisedResult<ExperimentRunMetadata, LatitudeError> {
284-
const clickhouseEnabledResult = await isFeatureEnabledByName(
282+
const shouldUseClickHouse = await isClickHouseSpansReadEnabled(
285283
this.workspaceId,
286-
CLICKHOUSE_SPANS_READ_FLAG,
287284
this.db,
288285
)
289-
const shouldUseClickHouse =
290-
clickhouseEnabledResult.ok && clickhouseEnabledResult.value
291286

292287
if (shouldUseClickHouse) {
293288
const metadata = await chGetExperimentRunMetadata({

packages/core/src/repositories/spansRepository.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,11 @@ import {
6060
import { findByEvaluationResults as chFindByEvaluationResults } from '../queries/clickhouse/spans/findByEvaluationResults'
6161
import { countByProjectAndSource as chCountByProjectAndSource } from '../queries/clickhouse/spans/countByProjectAndSource'
6262
import { Database, database } from '../client'
63-
import { isFeatureEnabledByName } from '../services/workspaceFeatures/isFeatureEnabledByName'
63+
import { isClickHouseSpansReadEnabled } from '../services/workspaceFeatures/isClickHouseSpansReadEnabled'
6464
import { captureException } from '../utils/datadogCapture'
6565

6666
const tt = getTableColumns(spans)
6767

68-
const CLICKHOUSE_SPANS_READ_FLAG = 'clickhouse-spans-read'
69-
7068
export class SpansRepository extends Repository<Span> {
7169
private clickHouseOverride: boolean | undefined
7270

@@ -83,12 +81,10 @@ export class SpansRepository extends Repository<Span> {
8381
if (this.clickHouseOverride !== undefined) return this.clickHouseOverride
8482

8583
try {
86-
const result = await isFeatureEnabledByName(
84+
this.clickHouseOverride = await isClickHouseSpansReadEnabled(
8785
this.workspaceId,
88-
CLICKHOUSE_SPANS_READ_FLAG,
8986
this.db,
9087
)
91-
this.clickHouseOverride = result.ok ? result.value : false
9288
} catch (error) {
9389
captureException(error as Error)
9490
this.clickHouseOverride = false

0 commit comments

Comments
 (0)