Skip to content

Commit 97013c3

Browse files
authored
feat(Diagnostics): display column's default value in diagnostics schema (#1102)
1 parent eb5a627 commit 97013c3

File tree

6 files changed

+38
-4
lines changed

6 files changed

+38
-4
lines changed

src/containers/Tenant/Schema/SchemaViewer/SchemaViewer.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ export const SchemaViewer = ({type, path, tenantName, extended = false}: SchemaV
5656
return tableData.some((i) => i.autoIncrement);
5757
}, [tableData]);
5858

59+
const hasDefaultValue = React.useMemo(() => {
60+
return tableData.some((i) => i.defaultValue);
61+
}, [tableData]);
62+
5963
const columns = React.useMemo(() => {
6064
if (isViewType(type)) {
6165
return getViewColumns();
@@ -67,11 +71,11 @@ export const SchemaViewer = ({type, path, tenantName, extended = false}: SchemaV
6771
return getColumnTableColumns();
6872
}
6973
if (isRowTableType(type)) {
70-
return getRowTableColumns(extended, hasAutoIncrement);
74+
return getRowTableColumns(extended, hasAutoIncrement, hasDefaultValue);
7175
}
7276

7377
return [];
74-
}, [type, extended, hasAutoIncrement]);
78+
}, [type, extended, hasAutoIncrement, hasDefaultValue]);
7579

7680
const renderContent = () => {
7781
if (loading || isViewSchemaLoading) {

src/containers/Tenant/Schema/SchemaViewer/columns.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const SCHEMA_TABLE_COLUMS_IDS = {
1616
type: 'type',
1717
notNull: 'notNull',
1818
autoIncrement: 'autoIncrement',
19+
defaultValue: 'defaultValue',
1920
familyName: 'familyName',
2021
prefferedPoolKind: 'prefferedPoolKind',
2122
columnCodec: 'columnCodec',
@@ -95,6 +96,15 @@ const autoIncrementColumn: SchemaColumn = {
9596
return undefined;
9697
},
9798
};
99+
const defaultValueColumn: SchemaColumn = {
100+
name: SCHEMA_TABLE_COLUMS_IDS.defaultValue,
101+
get header() {
102+
return i18n('column-title.defaultValue');
103+
},
104+
width: 100,
105+
render: ({row}) => row.defaultValue,
106+
};
107+
98108
const familyColumn: SchemaColumn = {
99109
name: SCHEMA_TABLE_COLUMS_IDS.familyName,
100110
get header() {
@@ -129,12 +139,21 @@ export function getExternalTableColumns(): SchemaColumn[] {
129139
export function getColumnTableColumns(): SchemaColumn[] {
130140
return [idColumn, keyColumn, nameColumn, typeColumn, notNullColumn];
131141
}
132-
export function getRowTableColumns(extended: boolean, hasAutoIncrement: boolean): SchemaColumn[] {
142+
export function getRowTableColumns(
143+
extended: boolean,
144+
hasAutoIncrement: boolean,
145+
hasDefaultValue: boolean,
146+
): SchemaColumn[] {
133147
const rowTableColumns = [idColumn, keyColumn, nameColumn, typeColumn, notNullColumn];
134148

149+
if (hasDefaultValue) {
150+
rowTableColumns.push(defaultValueColumn);
151+
}
152+
135153
if (extended) {
136154
rowTableColumns.push(familyColumn, mediaColumn, compressionColumn);
137155
}
156+
138157
if (hasAutoIncrement) {
139158
rowTableColumns.push(autoIncrementColumn);
140159
}

src/containers/Tenant/Schema/SchemaViewer/i18n/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"column-title.type": "Type",
66
"column-title.notNull": "NotNull",
77
"column-title.autoIncrement": "AutoIncrement",
8+
"column-title.defaultValue": "Default",
89
"column-title.family": "Family",
910
"column-title.media": "Media",
1011
"column-title.compression": "Compression"

src/containers/Tenant/Schema/SchemaViewer/prepareData.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ function prepareRowTableSchema(data: TTableDescription = {}): SchemaData[] {
6161
const keyAccessorsMap = getKeyColumnsSortAccessorMap(KeyColumnIds);
6262

6363
const preparedColumns = Columns?.map((column) => {
64-
const {Id, Name, NotNull, Type, Family, DefaultFromSequence} = column;
64+
const {Id, Name, NotNull, Type, Family, DefaultFromSequence, DefaultFromLiteral} = column;
6565

6666
const isKeyColumn = Boolean(KeyColumnIds?.find((keyColumnId) => keyColumnId === Id));
6767
// Values in keyAccessorsMap are always negative, so it will be 1 for not key columns
@@ -81,6 +81,7 @@ function prepareRowTableSchema(data: TTableDescription = {}): SchemaData[] {
8181
type: Type,
8282
notNull: NotNull,
8383
autoIncrement: Boolean(DefaultFromSequence),
84+
defaultValue: DefaultFromLiteral?.value?.text_value,
8485
familyName,
8586
prefferedPoolKind,
8687
columnCodec,

src/containers/Tenant/Schema/SchemaViewer/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface SchemaData {
1212
familyName?: string;
1313
prefferedPoolKind?: string;
1414
columnCodec?: string;
15+
defaultValue?: string;
1516
}
1617

1718
export interface SchemaColumn extends Column<SchemaData> {

src/types/api/schema/shared.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ export interface TColumnDescription {
2424
FamilyName?: string;
2525
/** Path to sequence for default values */
2626
DefaultFromSequence?: string;
27+
DefaultFromLiteral?: {
28+
type: {
29+
type_id: string;
30+
};
31+
value: {
32+
text_value: string;
33+
};
34+
};
2735
NotNull?: boolean;
2836
}
2937

0 commit comments

Comments
 (0)