Skip to content

Commit

Permalink
Merge pull request #5646 from cloudforet-io/feature-dashboard-vue-query
Browse files Browse the repository at this point in the history
feat(vue-query): apply vue-query to dashboard & create api-clients
  • Loading branch information
piggggggggy authored Feb 15, 2025
2 parents c88eac7 + c600ee5 commit a4d358b
Show file tree
Hide file tree
Showing 912 changed files with 6,738 additions and 12,837 deletions.
41 changes: 41 additions & 0 deletions apps/web/src/api-clients/_common/composables/use-query-key.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import type { ComputedRef } from 'vue';
import { computed, reactive } from 'vue';


import type { QueryKey } from '@tanstack/vue-query';

import { useAppContextStore } from '@/store/app-context/app-context-store';
import { useUserWorkspaceStore } from '@/store/app-context/workspace/user-workspace-store';

/**
* Generates a computed query key for API requests, incorporating global parameters.
*
* @param primaryQueryKey - The primary key for the api query (e.g., 'private-dashboard/get'). It follows the `{api-resource-name}/{api-verb}` convention.
* @param additionalGlobalParams - Optional additional global parameters to include in the api query key.
* @returns A computed reference to the query key array.
*/

interface GlobalQueryParams {
workspaceId?: string;
isAdminMode?: boolean;
}
export const useAPIQueryKey = (
primaryQueryKey: string,
additionalGlobalParams?: Partial<GlobalQueryParams>,
): ComputedRef<QueryKey> => {
const appContextStore = useAppContextStore();
const userWorkspaceStore = useUserWorkspaceStore();

const _state = reactive({
currentWorkdpaceId: computed<string|undefined>(() => userWorkspaceStore.getters.currentWorkspaceId),
isAdminMode: computed<boolean>(() => appContextStore.getters.isAdminMode),
});

const globalQueryParams = reactive<GlobalQueryParams>({
workspaceId: _state.currentWorkdpaceId,
isAdminMode: _state.isAdminMode,
...additionalGlobalParams,
});

return computed<QueryKey>(() => [primaryQueryKey, { ...globalQueryParams }]);
};
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { RESOURCE_GROUP } from '@/schema/_common/constant';
import type { RESOURCE_GROUP } from '@/api-clients/_common/schema/constant';

export type ResourceGroupType = typeof RESOURCE_GROUP[keyof typeof RESOURCE_GROUP];

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ListResponse } from '@/schema/_common/api-verbs/list';
import type { FavoriteModel } from '@/schema/add-ons/favorite/model';
import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list';
import type { FavoriteModel } from '@/api-clients/add-ons/favorite/schema/model';

import type { FavoriteType } from '@/common/modules/favorites/favorite-button/type';

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Query } from '@cloudforet/core-lib/space-connector/type';

import type { ResourceGroupType } from '@/schema/_common/type';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';


export interface BudgetUsageAnalyzeParameters {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ResourceGroupType } from '@/schema/_common/type';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';

import type { Currency } from '@/store/display/type';

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Tags } from '@/schema/_common/model';
import type { ResourceGroupType } from '@/schema/_common/type';
import type { Tags } from '@/api-clients/_common/schema/model';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';
import type {
BudgetNotification, BudgetPlannedLimit, BudgetTimeUnit, ProviderFilter,
} from '@/schema/cost-analysis/budget/type';
} from '@/api-clients/cost-analysis/budget/schema/type';

export interface BudgetCreateParameters {
data_source_id: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Query } from '@cloudforet/core-lib/space-connector/type';

import type { BudgetTimeUnit } from '@/schema/cost-analysis/budget/type';
import type { BudgetTimeUnit } from '@/api-clients/cost-analysis/budget/schema/type';

export interface BudgetListParameters {
query?: Query
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { BudgetNotification } from '@/schema/cost-analysis/budget/type';
import type { BudgetNotification } from '@/api-clients/cost-analysis/budget/schema/type';

export interface BudgetSetNotificationParameters {
budget_id: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Tags } from '@/schema/_common/model';
import type { BudgetPlannedLimit } from '@/schema/cost-analysis/budget/type';
import type { Tags } from '@/api-clients/_common/schema/model';
import type { BudgetPlannedLimit } from '@/api-clients/cost-analysis/budget/schema/type';

export interface BudgetUpdateParameters {
budget_id: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { Tags } from '@/schema/_common/model';
import type { ResourceGroupType } from '@/schema/_common/type';
import type { Tags } from '@/api-clients/_common/schema/model';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';
import type {
BudgetNotification, BudgetPlannedLimit, BudgetTimeUnit, ProviderFilter,
} from '@/schema/cost-analysis/budget/type';
} from '@/api-clients/cost-analysis/budget/schema/type';

import type { Currency } from '@/store/display/type';

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { Tags } from '@/api-clients/_common/schema/model';
import type { CostQuerySetOption } from '@/api-clients/cost-analysis/cost-query-set/schema/type';


export interface CostQuerySetCreateParameters {
data_source_id: string;
name: string;
options: CostQuerySetOption;
tags?: Tags;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { Tags } from '@/api-clients/_common/schema/model';
import type { CostQuerySetOption } from '@/api-clients/cost-analysis/cost-query-set/schema/type';


export interface CostQuerySetUpdateParameters {
cost_query_set_id: string;
name?: string;
options?: CostQuerySetOption;
tags?: Tags;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Tags } from '@/schema/_common/model';
import type { CostQuerySetOption } from '@/schema/cost-analysis/cost-query-set/type';
import type { Tags } from '@/api-clients/_common/schema/model';
import type { CostQuerySetOption } from '@/api-clients/cost-analysis/cost-query-set/schema/type';


export interface CostQuerySetModel {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { CostReportConfigStatus } from '@/schema/cost-analysis/cost-report-config/type';
import type { CostReportConfigStatus } from '@/api-clients/cost-analysis/cost-report-config/schema/type';
import type { RoleType } from '@/schema/identity/role/type';

import type { Currency } from '@/store/display/type';
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Query } from '@cloudforet/core-lib/space-connector/type';

import type { CostReportStatus } from '@/schema/cost-analysis/cost-report/type';
import type { CostReportStatus } from '@/api-clients/cost-analysis/cost-report/schema/type';


export interface CostReportListParameters {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { CostReportStatus } from '@/schema/cost-analysis/cost-report/type';
import type { CostReportStatus } from '@/api-clients/cost-analysis/cost-report/schema/type';

import type { Currency } from '@/store/display/type';

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Tags } from '@/schema/_common/model';
import type { Tags } from '@/api-clients/_common/schema/model';

export interface CostModel {
cost_id: string;
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Query } from '@cloudforet/core-lib/space-connector/type';

import type { CostDataSourceState, CostDataSourceType } from '@/schema/cost-analysis/data-source/type';
import type { CostDataSourceState, CostDataSourceType } from '@/api-clients/cost-analysis/data-source/schema/type';


export interface CostDataSourceListParameters {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import type { JsonSchema } from '@cloudforet/mirinae/types/controls/forms/json-schema-form/type';

import type { ResourceGroupType } from '@/schema/_common/type';
import type {
CostDataSourceSecretType, CostDataSourceType, CostDataSourceSchedule,
} from '@/schema/cost-analysis/data-source/type';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';
import type { CostDataSourceSecretType, CostDataSourceState, CostDataSourceType } from '@/api-clients/cost-analysis/data-source/schema/type';


interface PluginInfoModel {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { COST_DATA_SOURCE_STATE, COST_DATA_SOURCE_TYPE, COST_DATA_SOURCE_SECRET_TYPE } from '@/schema/cost-analysis/data-source/constant';
import type { COST_DATA_SOURCE_STATE, COST_DATA_SOURCE_TYPE, COST_DATA_SOURCE_SECRET_TYPE } from './constant';

export type CostDataSourceState = typeof COST_DATA_SOURCE_STATE[keyof typeof COST_DATA_SOURCE_STATE];

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import type { ResourceGroupType } from '@/schema/_common/type';
import type { CostJobStatus } from '@/schema/cost-analysis/job/type';
import type { ResourceGroupType } from '@/api-clients/_common/schema/type';
import type { CostJobStatus } from '@/api-clients/cost-analysis/job/schema/type';


interface SyncedAccount {
account_id: string;
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import type {
REFRESH_INTERVAL_OPTIONS_MAP,
DASHBOARD_TYPE,
} from '@/schema/dashboard/_constants/dashboard-constant';
import type { DashboardGlobalVariable } from '@/schema/dashboard/_types/dashboard-global-variable-type';
} from '@/api-clients/dashboard/_constants/dashboard-constant';
import type { DashboardGlobalVariable } from '@/api-clients/dashboard/_types/dashboard-global-variable-type';
import type {
InheritOptions, WidgetOptions, WidgetSize,
} from '@/schema/dashboard/_types/widget-type';
import type { PrivateDashboardChangeFolderParameters } from '@/schema/dashboard/private-dashboard/api-verbs/change-folder';
import type { PrivateDashboardCreateParameters } from '@/schema/dashboard/private-dashboard/api-verbs/create';
import type { PrivateDashboardDeleteParameters } from '@/schema/dashboard/private-dashboard/api-verbs/delete';
import type { PrivateDashboardListParameters } from '@/schema/dashboard/private-dashboard/api-verbs/list';
import type { PrivateDashboardUpdateParameters } from '@/schema/dashboard/private-dashboard/api-verbs/update';
import type { PrivateDashboardModel } from '@/schema/dashboard/private-dashboard/model';
import type { PublicDashboardChangeFolderParameters } from '@/schema/dashboard/public-dashboard/api-verbs/change-folder';
import type { PublicDashboardCreateParameters } from '@/schema/dashboard/public-dashboard/api-verbs/create';
import type { PublicDashboardDeleteParameters } from '@/schema/dashboard/public-dashboard/api-verbs/delete';
import type { PublicDashboardListParameters } from '@/schema/dashboard/public-dashboard/api-verbs/list';
import type { PublicDashboardUpdateParameters } from '@/schema/dashboard/public-dashboard/api-verbs/update';
import type { PublicDashboardModel } from '@/schema/dashboard/public-dashboard/model';
} from '@/api-clients/dashboard/_types/widget-type';
import type { PrivateDashboardChangeFolderParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/change-folder';
import type { PrivateDashboardCreateParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/create';
import type { PrivateDashboardDeleteParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/delete';
import type { PrivateDashboardGetParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/get';
import type { PrivateDashboardListParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/list';
import type { PrivateDashboardUpdateParameters } from '@/api-clients/dashboard/private-dashboard/schema/api-verbs/update';
import type { PrivateDashboardModel } from '@/api-clients/dashboard/private-dashboard/schema/model';
import type { PublicDashboardChangeFolderParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/change-folder';
import type { PublicDashboardCreateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/create';
import type { PublicDashboardDeleteParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/delete';
import type { PublicDashboardGetParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/get';
import type { PublicDashboardListParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/list';
import type { PublicDashboardUpdateParameters } from '@/api-clients/dashboard/public-dashboard/schema/api-verbs/update';
import type { PublicDashboardModel } from '@/api-clients/dashboard/public-dashboard/schema/model';

import type { VariableModelType } from '@/lib/variable-models';
import type { Value } from '@/lib/variable-models/_base/types';
Expand All @@ -27,12 +29,13 @@ export type DashboardFolderType = 'PUBLIC'|'PRIVATE';

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
export type DashboardModel = PublicDashboardModel & PrivateDashboardModel;
export type DashboardModel = PublicDashboardModel | PrivateDashboardModel;
export type DashboardCreateParams = PublicDashboardCreateParameters | PrivateDashboardCreateParameters;
export type DashboardChangeFolderParams = PublicDashboardChangeFolderParameters | PrivateDashboardChangeFolderParameters;
export type DashboardListParams = PublicDashboardListParameters | PrivateDashboardListParameters;
export type DashboardUpdateParams = PublicDashboardUpdateParameters | PrivateDashboardUpdateParameters;
export type DashboardDeleteParams = PublicDashboardDeleteParameters | PrivateDashboardDeleteParameters;
export type DashboardGetParams = PublicDashboardGetParameters | PrivateDashboardGetParameters;

// dashboard variable schema types
type VariableSelectionType = 'SINGLE' | 'MULTI';
Expand Down Expand Up @@ -67,8 +70,9 @@ export interface DashboardVariablesSchema {
}

export interface DashboardGlobalVariablesSchema {
properties: Record<string, DashboardGlobalVariable>;
properties: DashboardGlobalVariableSchemaProperties;
}
export type DashboardGlobalVariableSchemaProperties = Record<string, DashboardGlobalVariable>;

// dashboard variables types
export type DashboardVariables = SingleSelectDashboardVariables | MultiSelectDashboardVariables;
Expand Down
14 changes: 14 additions & 0 deletions apps/web/src/api-clients/dashboard/_types/folder-type.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type { PrivateFolderCreateParameters } from '@/api-clients/dashboard/private-folder/schema/api-verbs/create';
import type { PrivateFolderDeleteParameters } from '@/api-clients/dashboard/private-folder/schema/api-verbs/delete';
import type { PrivateFolderUpdateParameters } from '@/api-clients/dashboard/private-folder/schema/api-verbs/update';
import type { PrivateFolderModel } from '@/api-clients/dashboard/private-folder/schema/model';
import type { PublicFolderCreateParameters } from '@/api-clients/dashboard/public-folder/schema/api-verbs/create';
import type { PublicFolderDeleteParameters } from '@/api-clients/dashboard/public-folder/schema/api-verbs/delete';
import type { PublicFolderUpdateParameters } from '@/api-clients/dashboard/public-folder/schema/api-verbs/update';
import type { PublicFolderModel } from '@/api-clients/dashboard/public-folder/schema/model';


export type FolderModel = PublicFolderModel | PrivateFolderModel;
export type FolderCreateParams = PublicFolderCreateParameters | PrivateFolderCreateParameters;
export type FolderUpdateParams = PublicFolderUpdateParameters | PrivateFolderUpdateParameters;
export type FolderDeleteParams = PublicFolderDeleteParameters | PrivateFolderDeleteParameters;
Original file line number Diff line number Diff line change
@@ -1,24 +1,42 @@
import type { ConsoleFilterOperator } from '@cloudforet/core-lib/query/type';

import type { ListResponse } from '@/api-clients/_common/schema/api-verbs/list';
import type {
WIDGET_OPTION_FILTER_KEY_MAP, WIDGET_OPTION_KEYS,
ASSET_DATA_FIELD_MAP, CHART_TYPE,
COST_DATA_FIELD_MAP,
GRANULARITY,
WIDGET_SIZE,
} from '@/schema/dashboard/_constants/widget-constant';
import type { PrivateWidgetListParameters } from '@/schema/dashboard/private-widget/api-verbs/list';
import type { PrivateWidgetModel } from '@/schema/dashboard/private-widget/model';
import type { PublicWidgetListParameters } from '@/schema/dashboard/public-widget/api-verbs/list';
import type { PublicWidgetModel } from '@/schema/dashboard/public-widget/model';
} from '@/api-clients/dashboard/_constants/widget-constant';
import type { PrivateWidgetCreateParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/create';
import type { PrivateWidgetDeleteParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/delete';
import type { PrivateWidgetListParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/list';
import type { PrivateWidgetLoadParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/load';
import type { PrivateWidgetLoadSumParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/load-sum';
import type { PrivateWidgetUpdateParameters } from '@/api-clients/dashboard/private-widget/schema/api-verbs/update';
import type { PrivateWidgetModel } from '@/api-clients/dashboard/private-widget/schema/model';
import type { PublicWidgetCreateParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/create';
import type { PublicWidgetDeleteParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/delete';
import type { PublicWidgetListParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/list';
import type { PublicWidgetLoadParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/load';
import type { PublicWidgetLoadSumParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/load-sum';
import type { PublicWidgetUpdateParameters } from '@/api-clients/dashboard/public-widget/schema/api-verbs/update';
import type { PublicWidgetModel } from '@/api-clients/dashboard/public-widget/schema/model';

import type { VariableModelType } from '@/lib/variable-models';
import type { ManagedVariableModelKey } from '@/lib/variable-models/managed-model-config/base-managed-model-config';

import type { DataInfo, LabelsInfo } from '@/common/modules/widgets/types/widget-model';



export type WidgetModel = PublicWidgetModel | PrivateWidgetModel;
export type WidgetListParams = PublicWidgetListParameters|PrivateWidgetListParameters;
export type WidgetCreateParams = PublicWidgetCreateParameters| PrivateWidgetCreateParameters;
export type WidgetUpdateParams = PublicWidgetUpdateParameters| PrivateWidgetUpdateParameters;
export type WidgetDeleteParams = PublicWidgetDeleteParameters| PrivateWidgetDeleteParameters;
export type WidgetLoadParams = PublicWidgetLoadParameters| PrivateWidgetLoadParameters;
export type WidgetLoadSumParams = PublicWidgetLoadSumParameters| PrivateWidgetLoadSumParameters;

interface WidgetItemOptions {
type: VariableModelType;
Expand Down Expand Up @@ -134,4 +152,16 @@ export type InheritOptions = Partial<Record<WidgetOptionKey, {
variable_key?: string;
}>>;

export type WidgetLoadResponse = ListResponse<Record<string, string|number>> & {
labels_info: LabelsInfo;
data_info: DataInfo;
order?: string[];
};

export type DataTableLoadResponse = ListResponse<Record<string, string|number>> & {
labels_info: LabelsInfo;
data_info: DataInfo;
order?: string[];
};


Loading

0 comments on commit a4d358b

Please sign in to comment.