ToolJet/server/migrations/1638941376844-SetMultiselectProperties.ts
Arpit f1457a1905
[improvement] Widget components #1475 - multi-select widget (#1535)
* upddated to new api & multiselect labels fixed

* backfill properties

* Expose default value of multiselect once the component is loaded

* Make multiselect reset to empty whenever option set is changed

* Whenever option set of multiselect changes, set it to default value if default value fits inside the new set of options

* Avoid crash in multiselect using ? operator.

Co-authored-by: Sherfin Shamsudeen <sherfin94@gmail.com>
2021-12-13 21:43:09 +05:30

45 lines
1.6 KiB
TypeScript

import { MigrationInterface, QueryRunner } from 'typeorm';
import { AppVersion } from '../src/entities/app_version.entity';
export class SetMultiselectProperties1635788669976 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
const entityManager = queryRunner.manager;
const queryBuilder = queryRunner.connection.createQueryBuilder();
const appVersionRepository = entityManager.getRepository(AppVersion);
const appVersions = await appVersionRepository.find();
for (const version of appVersions) {
const definition = version['definition'];
if (definition) {
const components = definition['components'];
for (const componentId of Object.keys(components)) {
const component = components[componentId];
if (component.component.component === 'Multiselect') {
component.component.definition.properties.values = component.component.definition.properties.value;
component.component.definition.properties.option_values = component.component.definition.properties.values;
components[componentId] = {
...component,
component: {
...component.component,
definition: {
...component.component.definition,
},
},
};
}
}
definition['components'] = components;
version.definition = definition;
await queryBuilder.update(AppVersion).set({ definition }).where('id = :id', { id: version.id }).execute();
}
}
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}