2022-07-01 04:38:48 +08:00
|
|
|
import React from 'react';
|
|
|
|
|
|
2022-07-16 04:49:24 +08:00
|
|
|
import { SelectableValue, toOption } from '@grafana/data';
|
2022-07-01 04:38:48 +08:00
|
|
|
|
2022-11-23 17:36:07 +08:00
|
|
|
import { COMMON_AGGREGATE_FNS } from '../../constants';
|
2022-07-01 04:38:48 +08:00
|
|
|
import { QueryWithDefaults } from '../../defaults';
|
|
|
|
|
import { DB, SQLQuery } from '../../types';
|
|
|
|
|
import { useSqlChange } from '../../utils/useSqlChange';
|
|
|
|
|
|
|
|
|
|
import { SelectRow } from './SelectRow';
|
|
|
|
|
|
|
|
|
|
interface SQLSelectRowProps {
|
|
|
|
|
fields: SelectableValue[];
|
|
|
|
|
query: QueryWithDefaults;
|
|
|
|
|
onQueryChange: (query: SQLQuery) => void;
|
|
|
|
|
db: DB;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function SQLSelectRow({ fields, query, onQueryChange, db }: SQLSelectRowProps) {
|
|
|
|
|
const { onSqlChange } = useSqlChange({ query, onQueryChange, db });
|
2022-11-23 17:36:07 +08:00
|
|
|
const functions = [...COMMON_AGGREGATE_FNS, ...(db.functions?.() || [])].map(toOption);
|
2022-07-16 04:49:24 +08:00
|
|
|
|
2022-11-02 12:30:35 +08:00
|
|
|
return (
|
|
|
|
|
<SelectRow
|
|
|
|
|
columns={fields}
|
|
|
|
|
sql={query.sql!}
|
|
|
|
|
format={query.format}
|
2022-11-23 17:36:07 +08:00
|
|
|
functions={functions}
|
2022-11-02 12:30:35 +08:00
|
|
|
onSqlChange={onSqlChange}
|
|
|
|
|
/>
|
|
|
|
|
);
|
2022-07-01 04:38:48 +08:00
|
|
|
}
|