move permission to asset interfaces

This commit is contained in:
Nate Kelley 2025-02-01 21:53:01 -07:00
parent d2e7c65ca4
commit 40d4532788
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
52 changed files with 192 additions and 200 deletions

View File

@ -0,0 +1 @@
export * from './interfaces';

View File

@ -1 +1,2 @@
export * from './interfaces';
export * from './permissionInterfaces';

View File

@ -9,3 +9,7 @@ export * from './datasources';
export * from './users';
export * from './permission';
export * from './organizations';
export * from './terms';
export * from './sql';
export * from './permission_groups';
export * from './dataset_groups';

View File

@ -119,3 +119,122 @@ export interface BusterPermissionGroup {
user_count: number;
users: BusterPermissionListUser[];
}
export interface BusterPermissionListUser {
id: string;
email: string;
name: string;
role: BusterOrganizationRole;
belongs_to: boolean;
//only shows up with no filters. To lazy to type this out better
team_role?: BusterOrganizationRole;
//???
team_count: number;
permission_group_count: number;
}
export interface BusterPermissionUser {
id: string;
email: string;
name: string;
role: BusterOrganizationRole;
created_at: string;
permission_group_count: number;
permission_groups: {
dataset_count: number;
id: string;
identities: ('User' | 'Team')[];
name: string;
}[];
queries_last_30_days: number;
team_count: number;
teams: {
id: string;
member_count: number;
name: string;
team_role: BusterOrganizationRole;
}[];
updated_at: string;
edit_sql: boolean;
export_assets: boolean;
email_slack_enabled: boolean;
upload_csv: boolean;
sharing_setting: 'none' | 'team' | 'organization' | 'public';
dataset_count: number;
}
export interface BusterPermissionListTeam {
id: string;
name: string;
member_count: number;
permission_group_count: number;
team_role: BusterOrganizationRole;
belongs_to: boolean;
}
export interface BusterPermissionTeam {
id: string;
name: string;
member_count: number;
sharing_setting: BusterPermissionUser['sharing_setting'];
edit_sql: boolean;
export_assets: boolean;
email_slack_enabled: boolean;
upload_csv: boolean;
created_at: string;
updated_at: string;
permission_group_count: number;
users: {
email: string;
id: string;
name: string;
role: BusterOrganizationRole;
}[];
permission_groups: {
dataset_count: number;
id: string;
identities: ('User' | 'Team')[];
name: string;
}[];
organization_id: string;
created_by: {
name: string;
id: string;
};
}
export interface BusterPermissionListGroup {
id: string;
name: string;
dataset_count: number;
belongs_to: boolean;
teams?: { id: string; name: string }[];
//only shows up with no filters. To lazy to type this out better
team_count?: number;
member_count?: number;
}
export interface BusterPermissionGroup {
id: string;
name: string;
dataset_count: number;
member_count: number;
team_count: number;
created_by: {
name: string;
id: string;
};
updated_at: string;
datasets: BusterDatasetListItem[];
deleted_at: string | null;
organization_id: string;
teams: {
id: string;
member_count: number;
name: string;
team_role: BusterOrganizationRole;
}[];
updated_by: string;
user_count: number;
users: BusterPermissionListUser[];
}

View File

@ -0,0 +1 @@
export * from './interfaces';

View File

@ -0,0 +1 @@
export * from './interfaces';

View File

@ -1,4 +1,4 @@
import { DataMetadata } from '@/api/asset_interfaces';
import { DataMetadata } from '../metric';
export interface RunSQLResponse {
data: Record<string, string | number | null>[];

View File

@ -1,3 +1,2 @@
export * from './requests';
export * from './responseInterfaces';
export * from './queryRequests';

View File

@ -20,11 +20,11 @@ import { QueryClient, useQueryClient } from '@tanstack/react-query';
import { useMemoizedFn } from 'ahooks';
import { LIST_DATASET_GROUPS_QUERY_KEY } from '../datasets/permissions/config';
import { USER_PERMISSIONS_DATASET_GROUPS_QUERY_KEY } from '../users/permissions/config';
import {
import type {
GetDatasetGroupDatasetsResponse,
GetDatasetGroupPermissionGroupsResponse,
GetDatasetGroupUsersResponse
} from './responseInterfaces';
} from '../../asset_interfaces';
import { timeout } from '@/utils';
export const useListDatasetGroups = () => {

View File

@ -1,11 +1,11 @@
import { serverFetch } from '@/api/createServerInstance';
import { mainApi } from '../instances';
import {
import type {
DatasetGroup,
GetDatasetGroupPermissionGroupsResponse,
GetDatasetGroupDatasetsResponse,
GetDatasetGroupUsersResponse
} from './responseInterfaces';
} from '../../asset_interfaces';
export const listDatasetGroups = async () => {
return mainApi.get<DatasetGroup[]>(`/dataset_groups`).then((res) => res.data);

View File

@ -1,4 +1,3 @@
export * from './requests';
export * from './queryRequests';
export * from './responseInterfaces';
export * from './config';

View File

@ -15,7 +15,7 @@ import {
import { useMemoizedFn } from 'ahooks';
import { QueryClient, useQueryClient } from '@tanstack/react-query';
import { getDatasetPermissionsOverview_server } from './serverRequests';
import { ListPermissionUsersResponse } from './responseInterfaces';
import type { ListPermissionUsersResponse } from '../../../asset_interfaces';
import { PERMISSION_GROUP_QUERY_KEY } from '../../permission_groups';
import { LIST_DATASET_GROUPS_QUERY_KEY } from './config';

View File

@ -1,10 +1,10 @@
import { mainApi } from '../../instances';
import {
import type {
DatasetPermissionsOverviewResponse,
ListDatasetGroupsResponse,
ListPermissionGroupsResponse,
ListPermissionUsersResponse
} from './responseInterfaces';
} from '../../../asset_interfaces';
import * as config from './config';
export const listIndividualDatasetPermissionGroups = async ({

View File

@ -2,7 +2,7 @@
import * as config from './config';
import { serverFetch } from '../../../createServerInstance';
import { DatasetPermissionsOverviewResponse } from './responseInterfaces';
import type { DatasetPermissionsOverviewResponse } from '../../../asset_interfaces';
export const getDatasetPermissionsOverview_server = async (datasetId: string) => {
const response = await serverFetch<DatasetPermissionsOverviewResponse>(

View File

@ -1,5 +1,5 @@
export * from './users';
export * from './terms';
export * from '../asset_interfaces/terms';
export * from './assets';
export * from './api_keys';
export * from './sql';
@ -7,3 +7,4 @@ export * from './datasets';
export * from './dataset_groups';
export * from './permission_groups';
export * from './organizations';
export * from './sql';

View File

@ -1,4 +1,3 @@
export * from './requests';
export * from './responseInterfaces';
export * from './queryRequests';
export * from './config';

View File

@ -22,15 +22,16 @@ import {
} from './requests';
import { useMemoizedFn } from 'ahooks';
import { QueryClient, useQueryClient } from '@tanstack/react-query';
import {
import type {
GetPermissionGroupDatasetGroupsResponse,
GetPermissionGroupDatasetsResponse,
GetPermissionGroupResponse,
GetPermissionGroupUsersResponse
} from './responseInterfaces';
} from '@/api/asset_interfaces';
import isEmpty from 'lodash/isEmpty';
import { PERMISSION_GROUP_QUERY_KEY } from './config';
import { ListPermissionGroupsResponse, updateDatasetPermissionGroups } from '../datasets';
import { updateDatasetPermissionGroups } from '../datasets';
import type { ListPermissionGroupsResponse } from '../../asset_interfaces';
import { USER_PERMISSIONS_PERMISSION_GROUPS_QUERY_KEY } from '../users/permissions/config';
export const useListAllPermissionGroups = () => {

View File

@ -1,12 +1,12 @@
import { serverFetch } from '@/api/createServerInstance';
import { mainApi } from '../instances';
import {
import type {
CreatePermissionGroupResponse,
GetPermissionGroupDatasetGroupsResponse,
GetPermissionGroupDatasetsResponse,
GetPermissionGroupResponse,
GetPermissionGroupUsersResponse
} from './responseInterfaces';
} from '../../asset_interfaces';
export const listAllPermissionGroups = async (): Promise<GetPermissionGroupResponse[]> => {
return await mainApi

View File

@ -1,120 +0,0 @@
import type { BusterDatasetListItem, BusterOrganizationRole } from '../../asset_interfaces/';
export interface BusterPermissionListUser {
id: string;
email: string;
name: string;
role: BusterOrganizationRole;
belongs_to: boolean;
//only shows up with no filters. To lazy to type this out better
team_role?: BusterOrganizationRole;
//???
team_count: number;
permission_group_count: number;
}
export interface BusterPermissionUser {
id: string;
email: string;
name: string;
role: BusterOrganizationRole;
created_at: string;
permission_group_count: number;
permission_groups: {
dataset_count: number;
id: string;
identities: ('User' | 'Team')[];
name: string;
}[];
queries_last_30_days: number;
team_count: number;
teams: {
id: string;
member_count: number;
name: string;
team_role: BusterOrganizationRole;
}[];
updated_at: string;
edit_sql: boolean;
export_assets: boolean;
email_slack_enabled: boolean;
upload_csv: boolean;
sharing_setting: 'none' | 'team' | 'organization' | 'public';
dataset_count: number;
}
export interface BusterPermissionListTeam {
id: string;
name: string;
member_count: number;
permission_group_count: number;
team_role: BusterOrganizationRole;
belongs_to: boolean;
}
export interface BusterPermissionTeam {
id: string;
name: string;
member_count: number;
sharing_setting: BusterPermissionUser['sharing_setting'];
edit_sql: boolean;
export_assets: boolean;
email_slack_enabled: boolean;
upload_csv: boolean;
created_at: string;
updated_at: string;
permission_group_count: number;
users: {
email: string;
id: string;
name: string;
role: BusterOrganizationRole;
}[];
permission_groups: {
dataset_count: number;
id: string;
identities: ('User' | 'Team')[];
name: string;
}[];
organization_id: string;
created_by: {
name: string;
id: string;
};
}
export interface BusterPermissionListGroup {
id: string;
name: string;
dataset_count: number;
belongs_to: boolean;
teams?: { id: string; name: string }[];
//only shows up with no filters. To lazy to type this out better
team_count?: number;
member_count?: number;
}
export interface BusterPermissionGroup {
id: string;
name: string;
dataset_count: number;
member_count: number;
team_count: number;
created_by: {
name: string;
id: string;
};
updated_at: string;
datasets: BusterDatasetListItem[];
deleted_at: string | null;
organization_id: string;
teams: {
id: string;
member_count: number;
name: string;
team_role: BusterOrganizationRole;
}[];
updated_by: string;
user_count: number;
users: BusterPermissionListUser[];
}

View File

@ -1,2 +1 @@
export * from './requests';
export * from './responseInterfaces';

View File

@ -1,5 +1,5 @@
import { mainApi } from '../instances';
import { RunSQLResponse } from './responseInterfaces';
import type { RunSQLResponse } from '../../asset_interfaces';
export const runSQL = (params: { data_source_id: string; sql: string }) => {
return mainApi.post<RunSQLResponse>('/sql/run', params);

View File

@ -35,12 +35,6 @@ export type MetricCreateNewMetric = BusterSocketRequestBase<
}
>;
export enum ShareRole {
OWNER = 'owner',
EDITOR = 'editor',
VIEWER = 'viewer'
}
export type MetricUpdateMetric = BusterSocketRequestBase<
'/metrics/update',
{

View File

@ -1,6 +1,6 @@
import type { BusterOrganizationRole } from '../../asset_interfaces';
import type { BusterSocketRequestBase } from '../base_interfaces';
import type { BusterPermissionUser } from '@/api/buster_rest/permissions';
import type { BusterPermissionUser } from '@/api/asset_interfaces';
export type PermissionsListUsersRequest = BusterSocketRequestBase<
'/permissions/users/list',

View File

@ -1,11 +1,11 @@
import {
import type {
BusterPermissionGroup,
BusterPermissionListGroup,
BusterPermissionListTeam,
BusterPermissionListUser,
BusterPermissionTeam,
BusterPermissionUser
} from '@/api/buster_rest/permissions';
} from '@/api/asset_interfaces';
export enum PermissionsResponses {
'/permissions/users/list:listUserPermissions' = '/permissions/users/list:listUserPermissions',

View File

@ -1,4 +1,4 @@
import { RunSQLResponse } from '@/api/buster_rest/sql';
import type { RunSQLResponse } from '@/api/asset_interfaces';
export enum SQLResponses {
'/sql/run:runSql' = '/sql/run:runSql'

View File

@ -1,4 +1,4 @@
import { DatasetPermissionOverviewUser } from '@/api/buster_rest/datasets';
import type { DatasetPermissionOverviewUser } from '@/api/asset_interfaces';
import { AppMaterialIcons, AppPopover } from '@/components';
import { BusterRoutes, createBusterRoute } from '@/routes';
import { useMemoizedFn } from 'ahooks';

View File

@ -2,7 +2,7 @@ import { useAntToken } from '@/styles/useAntToken';
import React, { useMemo } from 'react';
import { Dropdown, Divider, MenuProps } from 'antd';
import { AppMaterialIcons } from '@/components';
import { ShareRole } from '@/api/buster_socket/metrics';
import { ShareRole } from '@/api/asset_interfaces';
import { DropdownLabel } from '@/components/dropdown';
import { Text } from '@/components';
import { useMemoizedFn } from 'ahooks';

View File

@ -2,10 +2,9 @@ import { BusterUserAvatar } from '@/components';
import { AccessDropdown } from './AccessDropdown';
import React from 'react';
import { ShareRole } from '@/api/buster_socket/metrics';
import { ShareRole } from '@/api/asset_interfaces';
import { Text } from '@/components';
import { useMemoizedFn } from 'ahooks';
import { ShareAssetType } from '@/api/asset_interfaces';
export const IndividualSharePerson: React.FC<{
name: string;

View File

@ -2,7 +2,7 @@ import { AppSegmented, AppSegmentedProps } from '@/components';
import React, { useMemo } from 'react';
import { CopyLinkButton } from './CopyLinkButton';
import { ShareAssetType } from '@/api/asset_interfaces';
import { ShareRole } from '@/api/buster_socket/metrics';
import { ShareRole } from '@/api/asset_interfaces';
import { useMemoizedFn } from 'ahooks';
import { SegmentedValue } from 'antd/es/segmented';

View File

@ -5,7 +5,7 @@ import { AppMaterialIcons, BackButton } from '@/components';
import { useStyles } from './useStyles';
import { AccessDropdown } from './AccessDropdown';
import { useUserConfigContextSelector } from '@/context/Users';
import { ShareRole } from '@/api/buster_socket/metrics';
import { ShareRole } from '@/api/asset_interfaces';
import { useDashboardContextSelector, useIndividualDashboard } from '@/context/Dashboards';
import { ShareRequest } from '@/api/buster_socket/dashboards';
import { useMemoizedFn } from 'ahooks';

View File

@ -11,7 +11,7 @@ import {
import { DashboardIndividualDashboard } from './_DashboardIndividualDashboard';
import { EditableTitle } from '@/components';
import { useUserConfigContextSelector } from '@/context/Users';
import { ShareRole } from '@/api/buster_socket/metrics';
import { ShareRole } from '@/api/asset_interfaces';
import { useMemoizedFn } from 'ahooks';
import { BusterDashboardResponse } from '@/api/asset_interfaces';

View File

@ -1,4 +1,5 @@
import { ListDatasetGroupsResponse, useDatasetUpdateDatasetGroups } from '@/api/buster_rest';
import type { ListDatasetGroupsResponse } from '@/api/asset_interfaces';
import { useDatasetUpdateDatasetGroups } from '@/api/buster_rest';
import {
BusterListColumn,
BusterListRowItem,

View File

@ -1,5 +1,5 @@
import React, { useMemo, useState } from 'react';
import { DatasetPermissionOverviewUser } from '@/api/buster_rest/datasets';
import type { DatasetPermissionOverviewUser } from '@/api/asset_interfaces';
import {
BusterListColumn,
BusterListRowItem,

View File

@ -1,11 +1,8 @@
import {
ListPermissionGroupsResponse,
useDatasetUpdatePermissionGroups
} from '@/api/buster_rest/datasets';
import type { ListPermissionGroupsResponse } from '@/api/asset_interfaces';
import { useDatasetUpdatePermissionGroups } from '@/api/buster_rest/datasets';
import { BusterListColumn, BusterListRowItem, EmptyStateList } from '@/components/list';
import { useMemoizedFn } from 'ahooks';
import React, { useMemo, useState } from 'react';
import { Text } from '@/components/text';
import { PermissionGroupSelectedPopup } from './PermissionGroupSelectedPopup';
import { BusterInfiniteList, InfiniteListContainer } from '@/components/list';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';

View File

@ -1,8 +1,8 @@
import {
import type {
ListPermissionGroupsResponse,
ListPermissionUsersResponse,
useDatasetUpdatePermissionUsers
} from '@/api/buster_rest/datasets';
ListPermissionUsersResponse
} from '@/api/asset_interfaces';
import { useDatasetUpdatePermissionUsers } from '@/api/buster_rest/datasets';
import {
BusterListColumn,
BusterListRowItem,

View File

@ -7,7 +7,7 @@ import {
} from '@/components/list';
import React, { useMemo } from 'react';
import { BusterRoutes, createBusterRoute } from '@/routes';
import { DatasetGroup } from '@/api/buster_rest';
import type { DatasetGroup } from '@/api/asset_interfaces';
export const ListDatasetGroupsComponent: React.FC<{
datasetGroups: DatasetGroup[];

View File

@ -1,10 +1,8 @@
import {
import type {
GetDatasetGroupDatasetsResponse,
GetPermissionGroupDatasetsResponse,
GetPermissionGroupUsersResponse,
useUpdateDatasetGroupDatasets,
useUpdatePermissionGroupDatasets
} from '@/api/buster_rest';
GetPermissionGroupUsersResponse
} from '@/api/asset_interfaces';
import { useUpdateDatasetGroupDatasets } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -1,8 +1,8 @@
import {
import type {
GetDatasetGroupPermissionGroupsResponse,
GetPermissionGroupDatasetGroupsResponse,
useUpdateDatasetGroupPermissionGroups
} from '@/api/buster_rest';
GetPermissionGroupDatasetGroupsResponse
} from '@/api/asset_interfaces';
import { useUpdateDatasetGroupPermissionGroups } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@appComponents/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -1,8 +1,8 @@
import {
import type {
GetDatasetGroupUsersResponse,
GetPermissionGroupUsersResponse,
useUpdateDatasetGroupUsers
} from '@/api/buster_rest';
GetPermissionGroupUsersResponse
} from '@/api/asset_interfaces';
import { useUpdateDatasetGroupUsers } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -7,7 +7,7 @@ import {
} from '@/components/list';
import React, { useMemo } from 'react';
import { BusterRoutes, createBusterRoute } from '@/routes';
import { GetPermissionGroupResponse } from '@/api/buster_rest';
import type { GetPermissionGroupResponse } from '@/api/asset_interfaces';
export const ListPermissionGroupsComponent: React.FC<{
permissionGroups: GetPermissionGroupResponse[];

View File

@ -1,7 +1,5 @@
import {
GetPermissionGroupDatasetGroupsResponse,
useUpdatePermissionGroupDatasetGroups
} from '@/api/buster_rest';
import type { GetPermissionGroupDatasetGroupsResponse } from '@/api/asset_interfaces';
import { useUpdatePermissionGroupDatasetGroups } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@appComponents/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -1,9 +1,8 @@
import {
import type {
GetPermissionGroupDatasetsResponse,
GetPermissionGroupUsersResponse,
useUpdatePermissionGroupDatasets,
useUpdatePermissionGroupUsers
} from '@/api/buster_rest';
GetPermissionGroupUsersResponse
} from '@/api/asset_interfaces';
import { useUpdatePermissionGroupDatasets } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -1,4 +1,5 @@
import { GetPermissionGroupUsersResponse, useUpdatePermissionGroupUsers } from '@/api/buster_rest';
import type { GetPermissionGroupUsersResponse } from '@/api/asset_interfaces';
import { useUpdatePermissionGroupUsers } from '@/api/buster_rest';
import { PermissionAssignedCell } from '@/app/app/_components/PermissionComponents';
import {
BusterInfiniteList,

View File

@ -1,11 +1,11 @@
import { useMemoizedFn } from 'ahooks';
import React, { useEffect, useRef, useState } from 'react';
import { useBusterWebSocket } from '../BusterWebSocket';
import {
import type {
BusterPermissionGroup,
BusterPermissionTeam,
BusterPermissionUser
} from '@/api/buster_rest/permissions';
} from '@/api/asset_interfaces';
import {
PermissionGroupUpdateRequest,
PermissionTeamUpdateRequest,

View File

@ -1,4 +1,4 @@
import { BusterPermissionListGroup } from '@/api/buster_rest/permissions';
import type { BusterPermissionListGroup } from '@/api/asset_interfaces';
import React, { useEffect, useMemo, useState } from 'react';
import { useBusterWebSocket } from '../BusterWebSocket';
import { useMemoizedFn } from 'ahooks';

View File

@ -1,6 +1,6 @@
import React, { useEffect, useMemo, useState } from 'react';
import { useBusterWebSocket } from '../BusterWebSocket';
import { BusterPermissionListTeam } from '@/api/buster_rest/permissions';
import type { BusterPermissionListTeam } from '@/api/asset_interfaces';
import { useMemoizedFn } from 'ahooks';
import { PermissionListTeamRequest } from '@/api/buster_socket/permissions';
import { useBusterNotifications } from '../BusterNotifications';

View File

@ -1,5 +1,5 @@
import { PermissionsListUsersRequest } from '@/api/buster_socket/permissions';
import { BusterPermissionListUser } from '@/api/buster_rest/permissions';
import type { BusterPermissionListUser } from '@/api/asset_interfaces';
import { useMemoizedFn } from 'ahooks';
import React, { useEffect, useMemo } from 'react';
import { useBusterWebSocket } from '../BusterWebSocket';

View File

@ -12,7 +12,7 @@ import { useBusterMessageDataContextSelector } from '../MetricData';
import { useBusterNotifications } from '../BusterNotifications';
import { didColumnDataChange, simplifyChratConfigForSQLChange } from './helpers';
import { timeout } from '@/utils';
import { RunSQLResponse } from '@/api/buster_rest/sql/responseInterfaces';
import type { RunSQLResponse } from '@/api/asset_interfaces';
import { MetricUpdateMessage } from '@/api/buster_socket/metrics';
export const useSQLProvider = () => {