diff --git a/packages/twenty-server/src/metadata/workspace-cache-version/workspace-cache-version.service.ts b/packages/twenty-server/src/metadata/workspace-cache-version/workspace-cache-version.service.ts index 7a347b7a0..56fabc1ad 100644 --- a/packages/twenty-server/src/metadata/workspace-cache-version/workspace-cache-version.service.ts +++ b/packages/twenty-server/src/metadata/workspace-cache-version/workspace-cache-version.service.ts @@ -12,11 +12,11 @@ export class WorkspaceCacheVersionService { private readonly workspaceCacheVersionRepository: Repository, ) {} - async incrementVersion(workspaceId: string): Promise { - const workspaceCacheVersion = - (await this.workspaceCacheVersionRepository.findOne({ - where: { workspaceId }, - })) ?? { version: '0' }; + async incrementVersion(workspaceId: string): Promise { + const workspaceCacheVersion = (await this.getVersion(workspaceId)) ?? { + version: '0', + }; + const newVersion = `${+workspaceCacheVersion.version + 1}`; await this.workspaceCacheVersionRepository.upsert( { @@ -25,14 +25,16 @@ export class WorkspaceCacheVersionService { }, ['workspaceId'], ); + + return newVersion; } - async getVersion(workspaceId: string): Promise { + async getVersion(workspaceId: string): Promise { const workspaceCacheVersion = await this.workspaceCacheVersionRepository.findOne({ where: { workspaceId }, }); - return workspaceCacheVersion?.version ?? '0'; + return workspaceCacheVersion?.version ?? null; } } diff --git a/packages/twenty-server/src/workspace/workspace-schema-storage/workspace-schema-storage.service.ts b/packages/twenty-server/src/workspace/workspace-schema-storage/workspace-schema-storage.service.ts index f721bd3c4..f51478527 100644 --- a/packages/twenty-server/src/workspace/workspace-schema-storage/workspace-schema-storage.service.ts +++ b/packages/twenty-server/src/workspace/workspace-schema-storage/workspace-schema-storage.service.ts @@ -28,13 +28,17 @@ export class WorkspaceSchemaStorageService { (await this.cacheVersionMemoryStorageService.read({ key: workspaceId, })) ?? '0'; - const latestVersion = + let latestVersion = await this.workspaceCacheVersionService.getVersion(workspaceId); - if (currentVersion !== latestVersion) { + if (!latestVersion || currentVersion !== latestVersion) { // Invalidate cache if version mismatch is detected await this.invalidateCache(workspaceId); + // If the latest version is not found, increment the version + latestVersion ??= + await this.workspaceCacheVersionService.incrementVersion(workspaceId); + // Update the cache version after invalidation await this.cacheVersionMemoryStorageService.write({ key: workspaceId,