@lightdash/query-sdk 0.2663.1 → 0.2664.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -1
- package/dist/query.d.ts +11 -2
- package/dist/query.js +13 -2
- package/dist/useLightdash.d.ts +5 -1
- package/dist/useLightdash.js +6 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
export { query } from './query';
|
|
1
2
|
export { createClient, LightdashClient } from './client';
|
|
2
3
|
export { useLightdash } from './useLightdash';
|
|
3
|
-
export { LightdashProvider } from './LightdashProvider';
|
|
4
|
-
export type { Filter, FilterOperator, FilterValue, LightdashClientConfig, LightdashUser, Row, Sort, UnitOfTime, } from './types';
|
|
4
|
+
export { LightdashProvider, useLightdashClient } from './LightdashProvider';
|
|
5
|
+
export type { Column, Filter, FilterOperator, FilterValue, FormatFunction, LightdashClientConfig, LightdashUser, Row, Sort, UnitOfTime, } from './types';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
// Query builder
|
|
2
|
+
export { query } from './query';
|
|
1
3
|
// Client
|
|
2
4
|
export { createClient, LightdashClient } from './client';
|
|
3
5
|
// React hook
|
|
4
6
|
export { useLightdash } from './useLightdash';
|
|
5
7
|
// Provider
|
|
6
|
-
export { LightdashProvider } from './LightdashProvider';
|
|
8
|
+
export { LightdashProvider, useLightdashClient } from './LightdashProvider';
|
package/dist/query.d.ts
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Chainable query builder.
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
|
-
*
|
|
6
|
-
* .model('orders')
|
|
5
|
+
* query('orders')
|
|
7
6
|
* .dimensions(['customer_segment', 'order_date'])
|
|
8
7
|
* .metrics(['total_revenue', 'order_count'])
|
|
9
8
|
* .filters([{ field: 'order_date', operator: 'inThePast', value: 90, unit: 'days' }])
|
|
@@ -13,6 +12,16 @@
|
|
|
13
12
|
* The builder is immutable -- each method returns a new instance.
|
|
14
13
|
*/
|
|
15
14
|
import type { Filter, InternalFilterDefinition, QueryDefinition, Sort } from './types';
|
|
15
|
+
/**
|
|
16
|
+
* Create a query builder for a model.
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* query('orders')
|
|
20
|
+
* .dimensions(['customer_segment'])
|
|
21
|
+
* .metrics(['total_revenue'])
|
|
22
|
+
* .limit(100)
|
|
23
|
+
*/
|
|
24
|
+
export declare function query(modelName: string): QueryBuilder;
|
|
16
25
|
export declare class QueryBuilder {
|
|
17
26
|
private readonly _explore;
|
|
18
27
|
private readonly _dimensions;
|
package/dist/query.js
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Chainable query builder.
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
|
-
*
|
|
6
|
-
* .model('orders')
|
|
5
|
+
* query('orders')
|
|
7
6
|
* .dimensions(['customer_segment', 'order_date'])
|
|
8
7
|
* .metrics(['total_revenue', 'order_count'])
|
|
9
8
|
* .filters([{ field: 'order_date', operator: 'inThePast', value: 90, unit: 'days' }])
|
|
@@ -12,6 +11,18 @@
|
|
|
12
11
|
*
|
|
13
12
|
* The builder is immutable -- each method returns a new instance.
|
|
14
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* Create a query builder for a model.
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* query('orders')
|
|
19
|
+
* .dimensions(['customer_segment'])
|
|
20
|
+
* .metrics(['total_revenue'])
|
|
21
|
+
* .limit(100)
|
|
22
|
+
*/
|
|
23
|
+
export function query(modelName) {
|
|
24
|
+
return new QueryBuilder(modelName);
|
|
25
|
+
}
|
|
15
26
|
export class QueryBuilder {
|
|
16
27
|
constructor(explore, dimensions = [], metrics = [], filters = [], sorts = [], limit = 500) {
|
|
17
28
|
this._explore = explore;
|
package/dist/useLightdash.d.ts
CHANGED
|
@@ -13,10 +13,14 @@
|
|
|
13
13
|
* // [{ customer_segment: 'Enterprise', total_revenue: 124000 }]
|
|
14
14
|
*/
|
|
15
15
|
import type { QueryBuilder } from './query';
|
|
16
|
-
import type { Row } from './types';
|
|
16
|
+
import type { Column, FormatFunction, Row } from './types';
|
|
17
17
|
type UseLightdashResult = {
|
|
18
18
|
/** Result rows as flat objects. Numbers are numbers, strings are strings. */
|
|
19
19
|
data: Row[];
|
|
20
|
+
/** Column metadata (name, label, type) */
|
|
21
|
+
columns: Column[];
|
|
22
|
+
/** Format a field value for display: format(row, 'total_revenue') → "$1,234" */
|
|
23
|
+
format: FormatFunction;
|
|
20
24
|
/** True while the query is executing */
|
|
21
25
|
loading: boolean;
|
|
22
26
|
/** Error if the query failed, null otherwise */
|
package/dist/useLightdash.js
CHANGED
|
@@ -14,9 +14,12 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
16
16
|
import { useTransport } from './LightdashProvider';
|
|
17
|
+
const noopFormat = (_row, _fieldId) => '';
|
|
17
18
|
export function useLightdash(query) {
|
|
18
19
|
const transport = useTransport();
|
|
19
20
|
const [data, setData] = useState([]);
|
|
21
|
+
const [columns, setColumns] = useState([]);
|
|
22
|
+
const [format, setFormat] = useState(() => noopFormat);
|
|
20
23
|
const [loading, setLoading] = useState(true);
|
|
21
24
|
const [error, setError] = useState(null);
|
|
22
25
|
const [fetchCount, setFetchCount] = useState(0);
|
|
@@ -34,6 +37,8 @@ export function useLightdash(query) {
|
|
|
34
37
|
.then((res) => {
|
|
35
38
|
if (!cancelled) {
|
|
36
39
|
setData(res.rows);
|
|
40
|
+
setColumns(res.columns);
|
|
41
|
+
setFormat(() => res.format);
|
|
37
42
|
setLoading(false);
|
|
38
43
|
}
|
|
39
44
|
})
|
|
@@ -48,5 +53,5 @@ export function useLightdash(query) {
|
|
|
48
53
|
};
|
|
49
54
|
// queryKey tracks query identity. query is intentionally omitted.
|
|
50
55
|
}, [queryKey, transport, fetchCount]); // eslint-disable-line
|
|
51
|
-
return { data, loading, error, refetch };
|
|
56
|
+
return { data, columns, format, loading, error, refetch };
|
|
52
57
|
}
|