From 0c2023cb9357bed1ebd11374b2a9818cdc969dd9 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 15 Nov 2021 16:31:04 +0530 Subject: [PATCH] feat: cache baseview data Signed-off-by: Pranav C --- .../nocodb/src/lib/noco/meta/NcMetaMgr.ts | 10 ++++++++++ .../nocodb/src/lib/noco/rest/RestAuthCtrl.ts | 20 ++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts index 7b45eebd25..2aa77af1a4 100644 --- a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts +++ b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts @@ -3463,6 +3463,16 @@ export default class NcMetaMgr { protected async disableSharedBaseLink(_req, args: any): Promise { try { + const sharedBase = await this.xcMeta.metaGet( + this.getProjectId(args), + this.getDbAlias(args), + 'nc_shared_bases', + { + project_id: this.getProjectId(args) + } + ); + if (!sharedBase) return; + XcCache.del(`nc_shared_bases||${sharedBase.shared_base_id}`); await this.xcMeta.metaDelete( this.getProjectId(args), this.getDbAlias(args), diff --git a/packages/nocodb/src/lib/noco/rest/RestAuthCtrl.ts b/packages/nocodb/src/lib/noco/rest/RestAuthCtrl.ts index db25b21c75..9b42f2dfde 100644 --- a/packages/nocodb/src/lib/noco/rest/RestAuthCtrl.ts +++ b/packages/nocodb/src/lib/noco/rest/RestAuthCtrl.ts @@ -592,14 +592,20 @@ export default class RestAuthCtrl { new CustomStrategy(async (req: any, callback) => { let user; if (req.headers['xc-shared-base-id']) { - const sharedBase = await this.xcMeta - .knex('nc_shared_bases') - .where({ - enabled: true, - shared_base_id: req.headers['xc-shared-base-id'] - }) - .first(); + const cacheKey = `nc_shared_bases||${req.headers['xc-shared-base-id']}`; + let sharedBase = XcCache.get(cacheKey); + + if (!sharedBase) { + sharedBase = await this.xcMeta + .knex('nc_shared_bases') + .where({ + enabled: true, + shared_base_id: req.headers['xc-shared-base-id'] + }) + .first(); + XcCache.set(cacheKey, sharedBase); + } user = { roles: sharedBase?.roles };