Skip to content

Commit 87e22cd

Browse files
authored
feat: add auto-increment for raw table type (#929)
1 parent e08a36a commit 87e22cd

File tree

5 files changed

+32
-5
lines changed

5 files changed

+32
-5
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ export const SchemaViewer = ({type, path, tenantName, extended = false}: SchemaV
5454
return prepareSchemaData(type, currentObjectData);
5555
}, [currentObjectData, type, viewColumnsData]);
5656

57+
const hasAutoIncrement = React.useMemo(() => {
58+
return tableData.some((i) => i.autoIncrement);
59+
}, [tableData]);
60+
5761
const columns = React.useMemo(() => {
5862
if (isViewType(type)) {
5963
return getViewColumns();
@@ -65,11 +69,11 @@ export const SchemaViewer = ({type, path, tenantName, extended = false}: SchemaV
6569
return getColumnTableColumns();
6670
}
6771
if (isRowTableType(type)) {
68-
return getRowTableColumns(extended);
72+
return getRowTableColumns(extended, hasAutoIncrement);
6973
}
7074

7175
return [];
72-
}, [type, extended]);
76+
}, [type, extended, hasAutoIncrement]);
7377

7478
const renderContent = () => {
7579
if (loading || isViewSchemaLoading) {

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const SCHEMA_TABLE_COLUMS_IDS = {
1515
isKeyColumn: 'isKeyColumn',
1616
type: 'type',
1717
notNull: 'notNull',
18+
autoIncrement: 'autoIncrement',
1819
familyName: 'familyName',
1920
prefferedPoolKind: 'prefferedPoolKind',
2021
columnCodec: 'columnCodec',
@@ -78,6 +79,22 @@ const notNullColumn: SchemaColumn = {
7879
return undefined;
7980
},
8081
};
82+
const autoIncrementColumn: SchemaColumn = {
83+
name: SCHEMA_TABLE_COLUMS_IDS.autoIncrement,
84+
get header() {
85+
return i18n('column-title.autoIncrement');
86+
},
87+
width: 100,
88+
// Table should start with notNull columns on sort click
89+
defaultOrder: DataTable.DESCENDING,
90+
render: ({row}) => {
91+
if (row.autoIncrement) {
92+
return '\u2713';
93+
}
94+
95+
return undefined;
96+
},
97+
};
8198
const familyColumn: SchemaColumn = {
8299
name: SCHEMA_TABLE_COLUMS_IDS.familyName,
83100
get header() {
@@ -112,11 +129,14 @@ export function getExternalTableColumns(): SchemaColumn[] {
112129
export function getColumnTableColumns(): SchemaColumn[] {
113130
return [idColumn, keyColumn, nameColumn, typeColumn, notNullColumn];
114131
}
115-
export function getRowTableColumns(extended: boolean): SchemaColumn[] {
132+
export function getRowTableColumns(extended: boolean, hasAutoIncrement: boolean): SchemaColumn[] {
116133
const rowTableColumns = [idColumn, keyColumn, nameColumn, typeColumn, notNullColumn];
117134

118135
if (extended) {
119-
return rowTableColumns.concat(familyColumn, mediaColumn, compressionColumn);
136+
rowTableColumns.push(familyColumn, mediaColumn, compressionColumn);
137+
}
138+
if (hasAutoIncrement) {
139+
rowTableColumns.push(autoIncrementColumn);
120140
}
121141

122142
return rowTableColumns;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"column-title.key": "Key",
55
"column-title.type": "Type",
66
"column-title.notNull": "NotNull",
7+
"column-title.autoIncrement": "AutoIncrement",
78
"column-title.family": "Family",
89
"column-title.media": "Media",
910
"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} = column;
64+
const {Id, Name, NotNull, Type, Family, DefaultFromSequence} = 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
@@ -80,6 +80,7 @@ function prepareRowTableSchema(data: TTableDescription = {}): SchemaData[] {
8080
keyAccessor,
8181
type: Type,
8282
notNull: NotNull,
83+
autoIncrement: Boolean(DefaultFromSequence),
8384
familyName,
8485
prefferedPoolKind,
8586
columnCodec,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface SchemaData {
88
keyAccessor?: number;
99
type?: string;
1010
notNull?: boolean;
11+
autoIncrement?: boolean;
1112
familyName?: string;
1213
prefferedPoolKind?: string;
1314
columnCodec?: string;

0 commit comments

Comments
 (0)