Skip to content

Commit

Permalink
feat: [UIE-8002] - Review fix: refactoring and variable renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
mpolotsk-akamai committed Sep 11, 2024
1 parent 6f2fd14 commit 92369fb
Show file tree
Hide file tree
Showing 15 changed files with 110 additions and 112 deletions.
2 changes: 1 addition & 1 deletion packages/api-v4/src/account/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export type AccountCapability =
| 'LKE HA Control Planes'
| 'Machine Images'
| 'Managed Databases'
| 'Managed Databases V2'
| 'Managed Databases Beta'
| 'NodeBalancers'
| 'Object Storage Access Key Regions'
| 'Object Storage Endpoint Types'
Expand Down
1 change: 1 addition & 0 deletions packages/api-v4/src/databases/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ export interface BaseDatabase {
* A key/value object where the key is an IP address and the value is a member type.
*/
members: Record<string, MemberType>;
platform?: string;
}

export interface MySQLDatabase extends BaseDatabase {
Expand Down
2 changes: 1 addition & 1 deletion packages/api-v4/src/regions/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export type Capabilities =
| 'Kubernetes'
| 'Linodes'
| 'Managed Databases'
| 'Managed Databases V2'
| 'Managed Databases Beta'
| 'Metadata'
| 'NodeBalancers'
| 'Object Storage'
Expand Down
10 changes: 5 additions & 5 deletions packages/manager/src/__data__/regionsData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export const regions: Region[] = [
'Vlans',
'VPCs',
'Managed Databases',
'Managed Databases V2',
'Managed Databases Beta',
'Metadata',
'Premium Plans',
'Placement Group',
Expand Down Expand Up @@ -130,7 +130,7 @@ export const regions: Region[] = [
'Vlans',
'VPCs',
'Managed Databases',
'Managed Databases V2',
'Managed Databases Beta',
'Metadata',
'Premium Plans',
],
Expand Down Expand Up @@ -486,7 +486,7 @@ export const regions: Region[] = [
'VPCs',
'Block Storage Migrations',
'Managed Databases',
'Managed Databases V2',
'Managed Databases Beta',
'Placement Group',
],
country: 'us',
Expand Down Expand Up @@ -514,7 +514,7 @@ export const regions: Region[] = [
'Cloud Firewall',
'Block Storage Migrations',
'Managed Databases',
'Managed Databases V2',
'Managed Databases Beta',
'Placement Group',
],
country: 'us',
Expand Down Expand Up @@ -546,7 +546,7 @@ export const regions: Region[] = [
'VPCs',
'Block Storage Migrations',
'Managed Databases',
'Managed Databases V2',
'Managed Databases Beta',
'Placement Group',
],
country: 'us',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ describe('PrimaryNav', () => {

it('should show Databases menu item if the user has the account capability V2 Beta', async () => {
const account = accountFactory.build({
capabilities: ['Managed Databases V2'],
capabilities: ['Managed Databases Beta'],
});

server.use(
Expand Down Expand Up @@ -121,7 +121,7 @@ describe('PrimaryNav', () => {

it('should show Databases menu item if the user has the account capability V2', async () => {
const account = accountFactory.build({
capabilities: ['Managed Databases V2'],
capabilities: ['Managed Databases Beta'],
});

server.use(
Expand Down Expand Up @@ -152,7 +152,7 @@ describe('PrimaryNav', () => {

it('should show Databases menu item if the user has the account capability V2', async () => {
const account = accountFactory.build({
capabilities: ['Managed Databases V2'],
capabilities: ['Managed Databases Beta'],
});

server.use(
Expand Down
4 changes: 3 additions & 1 deletion packages/manager/src/factories/databases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,9 @@ export const databaseInstanceFactory = Factory.Sync.makeFactory<DatabaseInstance
members: {
'2.2.2.2': 'primary',
},
platform: Factory.each((i) => (adb10(i) ? 'adb10' : 'adb20')),
platform: Factory.each((i) =>
adb10(i) ? 'rdbms-legacy' : 'rdbms-default'
),
region: Factory.each((i) => possibleRegions[i % possibleRegions.length]),
status: Factory.each((i) => possibleStatuses[i % possibleStatuses.length]),
type: Factory.each((i) => possibleTypes[i % possibleTypes.length]),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ describe('Database Create', () => {
server.use(
http.get('*/account', () => {
const account = accountFactory.build({
capabilities: ['Managed Databases V2'],
capabilities: ['Managed Databases Beta'],
});
return HttpResponse.json(account);
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ import type { PlanSelectionType } from 'src/features/components/PlansPanel/types
import type { ExtendedIP } from 'src/utilities/ipUtils';

const V1 = 'Managed Databases';
const V2 = `Managed Databases V2`;
const V2 = `Managed Databases Beta`;

const useStyles = makeStyles()((theme: Theme) => ({
btnCtn: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,14 @@ describe('Database Table', () => {

await waitForElementToBeRemoved(getByTestId(loadingTestId));

const aDatabasesTab = screen.getByText('New Database Clusters');
const bDatabasesTab = screen.getByText('Legacy Database Clusters');
const newDatabasesTab = screen.getByText('New Database Clusters');
const legacyDatabasesTab = screen.getByText('Legacy Database Clusters');

expect(aDatabasesTab).toBeInTheDocument();
expect(bDatabasesTab).toBeInTheDocument();
expect(newDatabasesTab).toBeInTheDocument();
expect(legacyDatabasesTab).toBeInTheDocument();
});

it('should render logo in a databases tab ', async () => {
it('should render logo in new databases tab ', async () => {
server.use(
http.get('*/databases/instances', () => {
const databases = databaseInstanceFactory.buildList(5, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,100 +10,95 @@ import { Tab } from 'src/components/Tabs/Tab';
import { TabList } from 'src/components/Tabs/TabList';
import { TabPanels } from 'src/components/Tabs/TabPanels';
import { Tabs } from 'src/components/Tabs/Tabs';
import { getRestrictedResourceText } from 'src/features/Account/utils';
import DatabaseLandingTable from 'src/features/Databases/DatabaseLanding/DatabaseLandingTable';
import { useIsDatabasesEnabled } from 'src/features/Databases/utilities';
import { DatabaseClusterInfoBanner } from 'src/features/GlobalNotifications/DatabaseClusterInfoBanner';
import { useOrder } from 'src/hooks/useOrder';
import { usePagination } from 'src/hooks/usePagination';
import { useRestrictedGlobalGrantCheck } from 'src/hooks/useRestrictedGlobalGrantCheck';
import { useAccount } from 'src/queries/account/account';
import {
useDatabaseTypesQuery,
useDatabasesQuery,
} from 'src/queries/databases/databases';
import { getAPIErrorOrDefault } from 'src/utilities/errorUtils';

import { DatabaseEmptyState } from './DatabaseEmptyState';
import { DatabaseRow } from './DatabaseRow';

import type { DatabaseInstance } from '@linode/api-v4/lib/databases';
import { getRestrictedResourceText } from 'src/features/Account/utils';

const preferenceKey = 'databases';

const DatabaseLanding = () => {
const history = useHistory();
const aDatabasesPagination = usePagination(1, preferenceKey, 'a');
const bDatabasesPagination = usePagination(1, preferenceKey, 'b');
const newDatabasesPagination = usePagination(1, preferenceKey, 'new');
const legacyDatabasesPagination = usePagination(1, preferenceKey, 'legacy');
const isRestricted = useRestrictedGlobalGrantCheck({
globalGrantType: 'add_databases',
});
const account = useAccount();

const { data: types, isLoading: isTypeLoading } = useDatabaseTypesQuery();
const { isLoading: isTypeLoading } = useDatabaseTypesQuery();
const { isDatabasesV2Enabled } = useIsDatabasesEnabled();

const {
handleOrderChange: aDatabaseHandleOrderChange,
order: aDatabaseOrder,
orderBy: aDatabaseOrderBy,
handleOrderChange: newDatabaseHandleOrderChange,
order: newDatabaseOrder,
orderBy: newDatabaseOrderBy,
} = useOrder(
{
order: 'desc',
orderBy: 'label',
},
`a-${preferenceKey}-order`
`new-${preferenceKey}-order`
);

const aDatabasesFilter = {
['+contains']: 'adb20',
['+order']: aDatabaseOrder,
['+order_by']: aDatabaseOrderBy,
const newDatabasesFilter = {
['platform']: 'rdbms-default',
['+order']: newDatabaseOrder,
['+order_by']: newDatabaseOrderBy,
};

const {
data: aDatabases,
error: aDatabasesError,
isLoading: aDatabasesIsLoading,
data: newDatabases,
error: newDatabasesError,
isLoading: newDatabasesIsLoading,
} = useDatabasesQuery(
{
page: aDatabasesPagination.page,
page_size: aDatabasesPagination.pageSize,
page: newDatabasesPagination.page,
page_size: newDatabasesPagination.pageSize,
},
aDatabasesFilter
newDatabasesFilter
);

const {
handleOrderChange: bDatabaseHandleOrderChange,
order: bDatabaseOrder,
orderBy: bDatabaseOrderBy,
handleOrderChange: legacyDatabaseHandleOrderChange,
order: legacyDatabaseOrder,
orderBy: legacyDatabaseOrderBy,
} = useOrder(
{
order: 'desc',
orderBy: 'label',
},
`b-${preferenceKey}-order`
`legacy-${preferenceKey}-order`
);

const bDatabasesFilter = {
['+contains']: 'adb10',
['+order']: bDatabaseOrder,
['+order_by']: bDatabaseOrderBy,
const legacyDatabasesFilter = {
['platform']: 'rdbms-legacy',
['+order']: legacyDatabaseOrder,
['+order_by']: legacyDatabaseOrderBy,
};

const {
data: bDatabases,
error: bDatabasesError,
isLoading: bDatabasesIsLoading,
data: legacyDatabases,
error: legacyDatabasesError,
isLoading: legacyDatabasesIsLoading,
} = useDatabasesQuery(
{
page: bDatabasesPagination.page,
page_size: bDatabasesPagination.pageSize,
page: legacyDatabasesPagination.page,
page_size: legacyDatabasesPagination.pageSize,
},
bDatabasesFilter
legacyDatabasesFilter
);

const error = aDatabasesError || bDatabasesError;
const error = newDatabasesError || legacyDatabasesError;
if (error) {
return (
<ErrorState
Expand All @@ -114,14 +109,14 @@ const DatabaseLanding = () => {
);
}

if (aDatabasesIsLoading || bDatabasesIsLoading || isTypeLoading) {
if (newDatabasesIsLoading || legacyDatabasesIsLoading || isTypeLoading) {
return <CircleProgress />;
}

const showTabs = isDatabasesV2Enabled && bDatabases.data.length !== 0;
const showTabs = isDatabasesV2Enabled && legacyDatabases?.data.length !== 0;

const showEmpty =
aDatabases.data.length === 0 && bDatabases.data.length === 0;
newDatabases?.data.length === 0 && legacyDatabases?.data.length === 0;

if (showEmpty) {
return <DatabaseEmptyState />;
Expand All @@ -144,7 +139,7 @@ const DatabaseLanding = () => {
title="Database Clusters"
/>
{showTabs && <DatabaseClusterInfoBanner />}
<Box sx={{ marginTop: '15px' }}>
<Box>
{showTabs ? (
<Tabs>
<TabList>
Expand All @@ -154,37 +149,40 @@ const DatabaseLanding = () => {
<TabPanels>
<SafeTabPanel index={0}>
<DatabaseLandingTable
data={bDatabases.data}
handleOrderChange={bDatabaseHandleOrderChange}
order={bDatabaseOrder}
orderBy={bDatabaseOrderBy}
types={types}
data={legacyDatabases?.data}
handleOrderChange={legacyDatabaseHandleOrderChange}
order={legacyDatabaseOrder}
orderBy={legacyDatabaseOrderBy}
/>
</SafeTabPanel>
<SafeTabPanel index={1}>
<DatabaseLandingTable
data={aDatabases.data}
handleOrderChange={aDatabaseHandleOrderChange}
isADatabases={true}
order={aDatabaseOrder}
orderBy={aDatabaseOrderBy}
types={types}
data={newDatabases?.data}
handleOrderChange={newDatabaseHandleOrderChange}
isNewDatabase={true}
order={newDatabaseOrder}
orderBy={newDatabaseOrderBy}
/>
</SafeTabPanel>
</TabPanels>
</Tabs>
) : (
<DatabaseLandingTable
data={
isDatabasesV2Enabled ? newDatabases?.data : legacyDatabases?.data
}
handleOrderChange={
isDatabasesV2Enabled
? aDatabaseHandleOrderChange
: bDatabaseHandleOrderChange
? newDatabaseHandleOrderChange
: legacyDatabaseHandleOrderChange
}
order={
isDatabasesV2Enabled ? newDatabaseOrder : legacyDatabaseOrder
}
orderBy={
isDatabasesV2Enabled ? newDatabaseOrderBy : legacyDatabaseOrderBy
}
data={isDatabasesV2Enabled ? aDatabases.data : bDatabases.data}
isADatabases={isDatabasesV2Enabled}
order={isDatabasesV2Enabled ? aDatabaseOrder : bDatabaseOrder}
orderBy={isDatabasesV2Enabled ? aDatabaseOrderBy : bDatabaseOrderBy}
types={types}
isNewDatabase={isDatabasesV2Enabled}
/>
)}
</Box>
Expand Down
Loading

0 comments on commit 92369fb

Please sign in to comment.