import service, categorize and update events with associations

This commit is contained in:
arpitnath 2023-08-26 03:59:58 +05:30
parent c0bd6b2f0d
commit 72297e6f07
2 changed files with 57 additions and 34 deletions

View file

@ -1,7 +1,7 @@
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn } from 'typeorm';
import { AppVersion } from './app_version.entity';
enum Target {
export enum Target {
page = 'page',
component = 'component',
dataQuery = 'data_query',

View file

@ -19,6 +19,7 @@ import { Organization } from 'src/entities/organization.entity';
import { Page } from 'src/entities/page.entity';
import { Component } from 'src/entities/component.entity';
import { Layout } from 'src/entities/layout.entity';
import { EventHandler, Target } from 'src/entities/event_handler.entity';
@Injectable()
export class AppImportExportService {
@ -547,6 +548,7 @@ export class AppImportExportService {
);
}
}
for (const query of dataQueries.filter(
(dq) => dq.dataSourceId === source.id && dq.appVersionId === appVersion.id
)) {
@ -564,12 +566,28 @@ export class AppImportExportService {
}
for (const newQuery of newDataQueries) {
// const dataQueryEvents = [];
const newOptions = this.replaceDataQueryOptionsWithNewDataQueryIds(newQuery.options, dataQueryMapping);
newQuery.options = newOptions;
console.log('------arpit new data query:: ', { newQuery });
const queryEvents = newQuery.options?.events || [];
delete newOptions?.events;
newQuery.options = newOptions;
await manager.save(newQuery);
queryEvents.forEach(async (event, index) => {
const newEvent = {
name: event.eventId,
sourceId: newQuery.id,
target: Target.dataQuery,
event: {
...event,
eventIndex: index,
},
appVersionId: newQuery.appVersionId,
};
await manager.save(EventHandler, newEvent);
});
}
for (const appVersion of appVersions) {
@ -581,11 +599,9 @@ export class AppImportExportService {
for (const pageId of Object.keys(updatedDef?.pages)) {
const page = updatedDef.pages[pageId];
const pageEvents = page.events;
const pageEvents = page.events || [];
const componentEvents = [];
// console.log('-----arpit appDefinition', { def: JSON.stringify(updatedDef) });
const pagePostionIntheList = Object.keys(updatedDef?.pages).indexOf(pageId);
const isHompage = updatedDef.homePageId === pageId;
@ -633,35 +649,42 @@ export class AppImportExportService {
//Event handlers
console.log('-----arpit events handle', {
componentEvents: JSON.stringify(componentEvents),
pageEvents: JSON.stringify(pageEvents),
if (pageEvents.length > 0) {
pageEvents.forEach(async (event, index) => {
const newEvent = {
name: event.eventId,
sourceId: pageCreated.id,
target: Target.page,
event: {
...event,
eventIndex: index,
},
appVersionId: appVersionMapping[appVersion.id],
};
await manager.save(EventHandler, newEvent);
});
}
componentEvents.forEach((eventObj) => {
if (eventObj.event?.length === 0) return;
eventObj.event.forEach(async (event, index) => {
const newEvent = {
name: event.eventId,
sourceId: eventObj.componentId,
target: Target.component,
event: {
...event,
eventIndex: index,
},
appVersionId: appVersionMapping[appVersion.id],
};
await manager.save(EventHandler, newEvent);
});
});
// pageEvents.forEach(async (eventObj) => {
// const newEvent = {
// name: eventObj.event.eventId,
// sourceId: pageCreated.id,
// target: eventObj.eventType || 'page',
// event: eventObj.event,
// appVersionId: appVersionMapping[appVersion.id],
// };
// await manager.save(Event, newEvent);
// });
// componentEvents.forEach(async (eventObj) => {
// const newEvent = {
// name: eventObj.event.eventId,
// sourceId: eventObj.attachedTo,
// target: eventObj.eventType || 'component',
// event: eventObj.event,
// appVersionId: appVersionMapping[appVersion.id],
// };
// await manager.save(Event, newEvent);
// });
if (isHompage) {
updateHomepageId = pageCreated.id;
}