Skip to content

Commit

Permalink
Add RTK endpoints for loading and searching parameters (#44291)
Browse files Browse the repository at this point in the history
* Add RTK endpoints for loading and searching parameters

* Add Parameter API types

* Move types to metabase-types

* Add return type to normalizeQuery
  • Loading branch information
romeovs committed Jun 18, 2024
1 parent cc17b9e commit 4f6bf67
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ export function areParameterValuesIdentical(a, b) {
);
}

/**
* @import { NormalizedParameter } from "metabase-types/api";
*
* @returns {NormalizedParameter}
*/
export function normalizeParameter(parameter) {
return {
id: parameter.id,
Expand Down
23 changes: 23 additions & 0 deletions frontend/src/metabase-types/api/parameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,26 @@ export type ParameterQueryObject = {
target: ParameterTarget;
value: ParameterValueOrArray;
};

export type NormalizedParameter = {
id: ParameterId;
name: string;
slug: string;
type: string;
target?: ParameterTarget;
options?: ParameterOptions;
values_query_type?: ValuesQueryType;
values_source_type?: ValuesSourceType;
values_source_config?: ValuesSourceConfig;
};

export type GetParameterValuesRequest = {
parameter: NormalizedParameter;
field_ids: number[];
};

export type SearchParameterValuesRequest = {
parameter: Parameter;
field_ids: number[];
query: string;
};
1 change: 1 addition & 0 deletions frontend/src/metabase/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export * from "./database";
export * from "./dataset";
export * from "./field";
export * from "./login-history";
export * from "./parameters";
export * from "./permission";
export * from "./persist";
export * from "./revision";
Expand Down
36 changes: 36 additions & 0 deletions frontend/src/metabase/api/parameters.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import type {
GetParameterValuesRequest,
ParameterValues,
SearchParameterValuesRequest,
} from "metabase-types/api";

import { Api } from "./api";
import { idTag } from "./tags";

export const parametersApi = Api.injectEndpoints({
endpoints: builder => ({
getParameterValues: builder.query<
ParameterValues,
GetParameterValuesRequest
>({
query: params => ({
method: "POST",
url: `/api/dataset/parameter/values`,
params,
}),
providesTags: (_values, _error, params) => [
idTag("parameter-values", params.parameter.id),
],
}),
searchParameterValues: builder.query<
ParameterValues,
SearchParameterValuesRequest
>({
query: params => ({
method: "POST",
url: `/api/dataset/parameter/search/${params.query}`,
params,
}),
}),
}),
});
1 change: 1 addition & 0 deletions frontend/src/metabase/api/tags/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export const TAG_TYPES = [
"field",
"field-values",
"indexed-entity",
"parameter-values",
"permissions-group",
"persisted-info",
"persisted-model",
Expand Down

0 comments on commit 4f6bf67

Please sign in to comment.