Skip to content

Commit a69227a

Browse files
Merge branch 'main' of https://github.com/wannabespace/conar into feat/db-version
2 parents 76e81e6 + ce1745d commit a69227a

5 files changed

Lines changed: 58 additions & 36 deletions

File tree

apps/desktop/src/routes/_protected/database/$id/sql/-components/runner/index.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,25 @@ import { hasDangerousSqlKeywords } from '~/entities/connection/utils'
88

99
export * from './runner'
1010

11-
function transformResult({ rows, query, startLineNumber, endLineNumber }: { rows: unknown[] } & Pick<typeof connectionStoreType.infer['queriesToRun'][number], 'query' | 'startLineNumber' | 'endLineNumber'>) {
11+
function transformResult({ rows, query, startLineNumber, endLineNumber, executionTime }: { rows: unknown[], executionTime: number } & Pick<typeof connectionStoreType.infer['queriesToRun'][number], 'query' | 'startLineNumber' | 'endLineNumber'>) {
1212
return {
1313
data: rows as Record<string, unknown>[],
1414
error: null,
1515
query,
1616
startLineNumber,
1717
endLineNumber,
18+
executionTime,
1819
}
1920
}
2021

21-
function transformError({ error, query, startLineNumber, endLineNumber }: { error: unknown } & Pick<typeof connectionStoreType.infer['queriesToRun'][number], 'query' | 'startLineNumber' | 'endLineNumber'>) {
22+
function transformError({ error, query, startLineNumber, endLineNumber, executionTime }: { error: unknown, executionTime: number } & Pick<typeof connectionStoreType.infer['queriesToRun'][number], 'query' | 'startLineNumber' | 'endLineNumber'>) {
2223
return {
2324
data: null,
2425
error: error instanceof Error ? error.message : String(error),
2526
query,
2627
startLineNumber,
2728
endLineNumber,
29+
executionTime,
2830
}
2931
}
3032

@@ -43,12 +45,15 @@ export function runnerQueryOptions({ connection }: { connection: typeof connecti
4345
return []
4446
}
4547

48+
const startTime = performance.now()
4649
try {
4750
const { result } = await executeAndLogSql({ connection, sql: query })
48-
results.push(transformResult({ rows: result as unknown[], query, startLineNumber, endLineNumber }))
51+
const executionTime = performance.now() - startTime
52+
results.push(transformResult({ rows: result as unknown[], query, startLineNumber, endLineNumber, executionTime }))
4953
}
5054
catch (error) {
51-
results.push(transformError({ error, query, startLineNumber, endLineNumber }))
55+
const executionTime = performance.now() - startTime
56+
results.push(transformError({ error, query, startLineNumber, endLineNumber, executionTime }))
5257
}
5358
}
5459

apps/desktop/src/routes/_protected/database/$id/sql/-components/runner/runner-results-table.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ import { DEFAULT_COLUMN_WIDTH } from '~/entities/connection/components/table/uti
1717
export function RunnerResultsTable({
1818
data,
1919
columns,
20+
executionTime,
2021
}: {
2122
data: Record<string, unknown>[]
2223
columns: Column[]
24+
executionTime: number
2325
}) {
2426
const [search, setSearch] = useState('')
2527

@@ -63,6 +65,16 @@ export function RunnerResultsTable({
6365
return limit ? filteredData.slice(0, limit) : filteredData
6466
}
6567

68+
const formatExecutionTime = (ms: number) => {
69+
if (ms < 1) {
70+
return `${(ms * 1000).toFixed(0)}μs`
71+
}
72+
if (ms < 1000) {
73+
return `${ms.toFixed(2)}ms`
74+
}
75+
return `${(ms / 1000).toFixed(2)}s`
76+
}
77+
6678
return (
6779
<div className="h-full">
6880
<div className="flex h-10 items-center justify-between gap-2 pr-1 pl-4">
@@ -74,6 +86,10 @@ export function RunnerResultsTable({
7486
{filteredData.length === 1 ? 'row' : 'rows'}
7587
{search && filteredData.length !== data.length && ` (filtered from ${data.length})`}
7688
</span>
89+
<Separator orientation="vertical" className="h-4!" />
90+
<span className="text-xs text-muted-foreground">
91+
{formatExecutionTime(executionTime)}
92+
</span>
7793
</div>
7894
<div className="flex items-center gap-2">
7995
<div className="relative max-w-60 flex-1">

apps/desktop/src/routes/_protected/database/$id/sql/-components/runner/runner-results.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export function RunnerResults() {
8282
</TabsTrigger>
8383
))}
8484
</TabsList>
85-
{results.map(({ data, error, startLineNumber, endLineNumber }, index) => (
85+
{results.map(({ data, error, startLineNumber, endLineNumber, executionTime }, index) => (
8686
<TabsContent
8787
// eslint-disable-next-line react/no-array-index-key
8888
key={index}
@@ -155,6 +155,7 @@ export function RunnerResults() {
155155
<RunnerResultsTable
156156
data={data}
157157
columns={Object.keys(data[0]!).map(key => ({ id: key }))}
158+
executionTime={executionTime}
158159
/>
159160
)}
160161
</TabsContent>

pnpm-lock.yaml

Lines changed: 30 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ catalog:
150150
tanstack-db-pglite: ^1.0.5
151151
taze: ^19.9.2
152152
tsx: ^4.21.0
153-
turbo: ^2.7.5
153+
turbo: ^2.8.0
154154
tw-animate-css: ^1.4.0
155155
typescript: ^5.9.3
156156
ua-parser-js: ^2.0.8

0 commit comments

Comments
 (0)