mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-24 09:28:31 +00:00
fix: separate update and fetch operations in clonePage method
The clonePage method was experiencing transaction isolation issues where findPagesForVersion would not return newly created components. This was caused by performing both update operations and fetch operations within the same dbTransactionForAppVersionAssociationsUpdate transaction. Changes: - Move page cloning and component creation inside transaction - Move page/event fetching outside transaction after commit - Ensure newly created components are visible in subsequent queries
This commit is contained in:
parent
05785ca19d
commit
5e264d45bb
1 changed files with 7 additions and 6 deletions
|
|
@ -57,7 +57,7 @@ export class PageService implements IPageService {
|
|||
|
||||
async clonePage(pageId: string, appVersionId: string, organizationId: string) {
|
||||
// TODO - Should use manager here - multiple db operations found
|
||||
return dbTransactionForAppVersionAssociationsUpdate(async (manager) => {
|
||||
await dbTransactionForAppVersionAssociationsUpdate(async (manager) => {
|
||||
const pageToClone = await manager.findOne(Page, {
|
||||
where: { id: pageId, appVersionId },
|
||||
});
|
||||
|
|
@ -91,12 +91,13 @@ export class PageService implements IPageService {
|
|||
const clonedpage = await manager.save(newPage);
|
||||
|
||||
await this.clonePageEventsAndComponents(pageId, clonedpage.id, manager);
|
||||
|
||||
const pages = await this.findPagesForVersion(appVersionId, organizationId, '', manager);
|
||||
const events = await this.eventHandlerService.findEventsForVersion(appVersionId, manager);
|
||||
|
||||
return { pages, events };
|
||||
}, appVersionId);
|
||||
|
||||
// Fetch pages and events separately after transaction completes
|
||||
const pages = await this.findPagesForVersion(appVersionId, organizationId, '');
|
||||
const events = await this.eventHandlerService.findEventsForVersion(appVersionId);
|
||||
|
||||
return { pages, events };
|
||||
}
|
||||
|
||||
async cloneGroup(groupPageId: string, appVersionId: string, organizationId) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue