Add field isLabelSyncedWithName (#8829)

## Context
The recent addition of object renaming introduced issues with enum
names. Enum names should follow the pattern
`${schemaName}.${tableName}_${columnName}_enum`. To address this, and to
allow users to customize the API name (which is included in the enum
name, columnName), this PR implements behavior similar to object
renaming by introducing a `isLabelSyncedWithName` boolean.

<img width="624" alt="Screenshot 2024-12-02 at 11 58 49"
src="https://github.com/user-attachments/assets/690fb71c-83f0-4922-80c0-946c92dacc30">
<img width="596" alt="Screenshot 2024-12-02 at 11 58 39"
src="https://github.com/user-attachments/assets/af9a0037-7cf5-40c3-9ed5-d51b340c8087">
This commit is contained in:
Weiko
2024-12-03 13:22:12 +01:00
committed by GitHub
parent 7e4277fbe4
commit 3c7805c6d0
27 changed files with 1118 additions and 125 deletions

View File

@ -24,10 +24,12 @@ describe('formatFieldMetadataItemInput', () => {
const input = {
defaultValue: "'OPTION_1'",
label: 'Example Label',
name: 'exampleLabel',
icon: 'example-icon',
type: FieldMetadataType.Select,
description: 'Example description',
options,
isLabelSyncedWithName: true,
};
const expected = {
@ -37,6 +39,7 @@ describe('formatFieldMetadataItemInput', () => {
name: 'exampleLabel',
options,
defaultValue: "'OPTION_1'",
isLabelSyncedWithName: true,
};
const result = formatFieldMetadataItemInput(input);
@ -47,9 +50,11 @@ describe('formatFieldMetadataItemInput', () => {
it('should handle input without options', () => {
const input = {
label: 'Example Label',
name: 'exampleLabel',
icon: 'example-icon',
type: FieldMetadataType.Select,
description: 'Example description',
isLabelSyncedWithName: true,
};
const expected = {
@ -59,6 +64,7 @@ describe('formatFieldMetadataItemInput', () => {
name: 'exampleLabel',
options: undefined,
defaultValue: undefined,
isLabelSyncedWithName: true,
};
const result = formatFieldMetadataItemInput(input);
@ -86,10 +92,12 @@ describe('formatFieldMetadataItemInput', () => {
const input = {
defaultValue: ["'OPTION_1'", "'OPTION_2'"],
label: 'Example Label',
name: 'exampleLabel',
icon: 'example-icon',
type: FieldMetadataType.MultiSelect,
description: 'Example description',
options,
isLabelSyncedWithName: true,
};
const expected = {
@ -99,6 +107,7 @@ describe('formatFieldMetadataItemInput', () => {
name: 'exampleLabel',
options,
defaultValue: ["'OPTION_1'", "'OPTION_2'"],
isLabelSyncedWithName: true,
};
const result = formatFieldMetadataItemInput(input);
@ -109,9 +118,11 @@ describe('formatFieldMetadataItemInput', () => {
it('should handle multi select input without options', () => {
const input = {
label: 'Example Label',
name: 'exampleLabel',
icon: 'example-icon',
type: FieldMetadataType.MultiSelect,
description: 'Example description',
isLabelSyncedWithName: true,
};
const expected = {
@ -121,6 +132,7 @@ describe('formatFieldMetadataItemInput', () => {
name: 'exampleLabel',
options: undefined,
defaultValue: undefined,
isLabelSyncedWithName: true,
};
const result = formatFieldMetadataItemInput(input);