mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-23 08:58:26 +00:00
versioning for query events
This commit is contained in:
parent
04e40a013e
commit
743fc2aadf
3 changed files with 78 additions and 4 deletions
|
|
@ -38,16 +38,23 @@ export const CreateVersion = ({
|
|||
setIsCreatingVersion(true);
|
||||
appVersionService
|
||||
.create(appId, versionName, editingVersion.id)
|
||||
.then(() => {
|
||||
.then((data) => {
|
||||
toast.success('Version Created');
|
||||
appVersionService.getAll(appId).then((data) => {
|
||||
setVersionName('');
|
||||
setIsCreatingVersion(false);
|
||||
setAppVersions(data.versions);
|
||||
const latestVersion = data.versions.at(0);
|
||||
setAppDefinitionFromVersion(latestVersion);
|
||||
setShowCreateAppVersion(false);
|
||||
});
|
||||
|
||||
appVersionService
|
||||
.getOne(appId, data.id)
|
||||
.then((data) => {
|
||||
setAppDefinitionFromVersion(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
toast.error(error);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
toast.error(error?.error);
|
||||
|
|
|
|||
|
|
@ -301,6 +301,8 @@ export class AppsController {
|
|||
}
|
||||
|
||||
const pagesForVersion = await this.pageService.findPagesForVersion(versionId);
|
||||
const eventsForVersion = await this.eventsService.findEventsForVersion(versionId);
|
||||
|
||||
const appCurrentEditingVersion = JSON.parse(JSON.stringify(appVersion));
|
||||
|
||||
delete appCurrentEditingVersion['app'];
|
||||
|
|
@ -315,6 +317,7 @@ export class AppsController {
|
|||
...appData,
|
||||
editing_version: camelizeKeys(appCurrentEditingVersion),
|
||||
pages: pagesForVersion,
|
||||
events: eventsForVersion,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ import { AppVersionUpdateDto } from '@dto/app-version-update.dto';
|
|||
import { Layout } from 'src/entities/layout.entity';
|
||||
|
||||
import { Component } from 'src/entities/component.entity';
|
||||
import { EventHandler } from 'src/entities/event_handler.entity';
|
||||
|
||||
const uuid = require('uuid');
|
||||
@Injectable()
|
||||
|
|
@ -401,6 +402,10 @@ export class AppsService {
|
|||
.where('page.appVersionId = :appVersionId', { appVersionId: versionFromId })
|
||||
.getMany();
|
||||
|
||||
const allEvents = await manager.find(EventHandler, {
|
||||
where: { appVersionId: versionFromId },
|
||||
});
|
||||
|
||||
let homePageId = prevHomePagePage;
|
||||
|
||||
const newComponents = [];
|
||||
|
|
@ -420,8 +425,24 @@ export class AppsService {
|
|||
homePageId = savedPage.id;
|
||||
}
|
||||
|
||||
const pageEvents = allEvents.filter((event) => event.sourceId === page.id);
|
||||
|
||||
pageEvents.forEach(async (event) => {
|
||||
const newEvent = new EventHandler();
|
||||
|
||||
newEvent.id = uuid.v4();
|
||||
newEvent.name = event.name;
|
||||
newEvent.sourceId = savedPage.id;
|
||||
newEvent.target = event.target;
|
||||
newEvent.event = event.event;
|
||||
newEvent.appVersionId = appVersion.id;
|
||||
|
||||
await manager.save(newEvent);
|
||||
});
|
||||
|
||||
page.components.forEach(async (component) => {
|
||||
const newComponent = new Component();
|
||||
const componentEvents = allEvents.filter((event) => event.sourceId === component.id);
|
||||
|
||||
newComponent.id = uuid.v4();
|
||||
newComponent.name = component.name;
|
||||
|
|
@ -448,6 +469,19 @@ export class AppsService {
|
|||
|
||||
newComponentLayouts.push(newLayout);
|
||||
});
|
||||
|
||||
componentEvents.forEach(async (event) => {
|
||||
const newEvent = new EventHandler();
|
||||
|
||||
newEvent.id = uuid.v4();
|
||||
newEvent.name = event.name;
|
||||
newEvent.sourceId = newComponent.id;
|
||||
newEvent.target = event.target;
|
||||
newEvent.event = event.event;
|
||||
newEvent.appVersionId = appVersion.id;
|
||||
|
||||
await manager.save(newEvent);
|
||||
});
|
||||
});
|
||||
|
||||
await manager.save(newComponents);
|
||||
|
|
@ -506,6 +540,9 @@ export class AppsService {
|
|||
const dataSources = versionFrom?.dataSources;
|
||||
const dataSourceMapping = {};
|
||||
const newDataQueries = [];
|
||||
const allEvents = await manager.find(EventHandler, {
|
||||
where: { appVersionId: versionFrom?.id },
|
||||
});
|
||||
|
||||
if (dataSources?.length) {
|
||||
for (const dataSource of dataSources) {
|
||||
|
|
@ -527,8 +564,22 @@ export class AppsService {
|
|||
dataSourceId: newDataSource.id,
|
||||
appVersionId: appVersion.id,
|
||||
};
|
||||
|
||||
const newQuery = await manager.save(manager.create(DataQuery, dataQueryParams));
|
||||
|
||||
const dataQueryEvents = allEvents.filter((event) => event.sourceId === dataQuery.id);
|
||||
for (const event of dataQueryEvents) {
|
||||
const newEvent = new EventHandler();
|
||||
|
||||
newEvent.id = uuid.v4();
|
||||
newEvent.name = event.name;
|
||||
newEvent.sourceId = newQuery.id;
|
||||
newEvent.target = event.target;
|
||||
newEvent.event = event.event;
|
||||
newEvent.appVersionId = appVersion.id;
|
||||
|
||||
await manager.save(newEvent);
|
||||
}
|
||||
|
||||
oldDataQueryToNewMapping[dataQuery.id] = newQuery.id;
|
||||
newDataQueries.push(newQuery);
|
||||
}
|
||||
|
|
@ -544,6 +595,19 @@ export class AppsService {
|
|||
};
|
||||
|
||||
const newQuery = await manager.save(manager.create(DataQuery, dataQueryParams));
|
||||
const dataQueryEvents = allEvents.filter((event) => event.sourceId === globalQuery.id);
|
||||
for (const event of dataQueryEvents) {
|
||||
const newEvent = new EventHandler();
|
||||
|
||||
newEvent.id = uuid.v4();
|
||||
newEvent.name = event.name;
|
||||
newEvent.sourceId = newQuery.id;
|
||||
newEvent.target = event.target;
|
||||
newEvent.event = event.event;
|
||||
newEvent.appVersionId = appVersion.id;
|
||||
|
||||
await manager.save(newEvent);
|
||||
}
|
||||
oldDataQueryToNewMapping[globalQuery.id] = newQuery.id;
|
||||
newDataQueries.push(newQuery);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue