diff --git a/packages/nocodb/src/helpers/formulaHelpers.ts b/packages/nocodb/src/helpers/formulaHelpers.ts index 3dd0b525df..0349a137a3 100644 --- a/packages/nocodb/src/helpers/formulaHelpers.ts +++ b/packages/nocodb/src/helpers/formulaHelpers.ts @@ -2,6 +2,7 @@ import jsep from 'jsep'; import { UITypes } from 'nocodb-sdk'; import type FormulaColumn from '../models/FormulaColumn'; import type { Column } from '~/models'; +import Noco from "~/Noco"; export async function getFormulasReferredTheColumn({ column, @@ -9,7 +10,7 @@ export async function getFormulasReferredTheColumn({ }: { column: Column; columns: Column[]; -}): Promise { +}, ncMeta = Noco.ncMeta): Promise { const fn = (pt) => { if (pt.type === 'CallExpression') { return pt.arguments.some((arg) => fn(arg)); @@ -25,7 +26,7 @@ export async function getFormulasReferredTheColumn({ const columns = await columnsPromise; if (c.uidt !== UITypes.Formula) return columns; - const formula = await c.getColOptions(); + const formula = await c.getColOptions(ncMeta); if (fn(jsep(formula.formula))) { columns.push(c); diff --git a/packages/nocodb/src/models/CalendarViewColumn.ts b/packages/nocodb/src/models/CalendarViewColumn.ts index 8a0c7ee356..2aa263900e 100644 --- a/packages/nocodb/src/models/CalendarViewColumn.ts +++ b/packages/nocodb/src/models/CalendarViewColumn.ts @@ -93,7 +93,7 @@ export default class CalendarViewColumn { { const view = await View.get(column.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } return this.get(id, ncMeta).then(async (viewColumn) => { diff --git a/packages/nocodb/src/models/Column.ts b/packages/nocodb/src/models/Column.ts index 7fd0f4d06b..d89a7aea41 100644 --- a/packages/nocodb/src/models/Column.ts +++ b/packages/nocodb/src/models/Column.ts @@ -216,7 +216,7 @@ export default class Column implements ColumnType { ncMeta, ); - await View.clearSingleQueryCache(column.fk_model_id); + await View.clearSingleQueryCache(column.fk_model_id, null, ncMeta); return col; } @@ -914,7 +914,7 @@ export default class Column implements ColumnType { // on column delete, delete any optimised single query cache { - await View.clearSingleQueryCache(col.fk_model_id); + await View.clearSingleQueryCache(col.fk_model_id, null, ncMeta); } } @@ -1074,11 +1074,16 @@ export default class Column implements ColumnType { column.column_order.view_id ) { const viewColumn = ( - await View.getColumns(column.column_order.view_id) + await View.getColumns(column.column_order.view_id, ncMeta) ).find((col) => col.fk_column_id === column.id); - await View.updateColumn(column.column_order.view_id, viewColumn.id, { - order: column.column_order.order, - }); + await View.updateColumn( + column.column_order.view_id, + viewColumn.id, + { + order: column.column_order.order, + }, + ncMeta, + ); } // set meta @@ -1098,16 +1103,22 @@ export default class Column implements ColumnType { await this.insertColOption(column, colId, ncMeta); // on column update, delete any optimised single query cache - await View.clearSingleQueryCache(oldCol.fk_model_id); + await View.clearSingleQueryCache(oldCol.fk_model_id, null, ncMeta); - const updatedColumn = await Column.get({ colId }); + const updatedColumn = await Column.get({ colId }, ncMeta); if (!skipFormulaInvalidate) { // invalidate formula parsed-tree in which current column is used // whenever a new request comes for that formula, it will be populated again - getFormulasReferredTheColumn({ - column: updatedColumn, - columns: await Column.list({ fk_model_id: oldCol.fk_model_id }, ncMeta), - }) + getFormulasReferredTheColumn( + { + column: updatedColumn, + columns: await Column.list( + { fk_model_id: oldCol.fk_model_id }, + ncMeta, + ), + }, + ncMeta, + ) .then(async (formulas) => { for (const formula of formulas) { await FormulaColumn.update( @@ -1146,7 +1157,7 @@ export default class Column implements ColumnType { const column = await Column.get({ colId }, ncMeta); - await View.clearSingleQueryCache(column.fk_model_id); + await View.clearSingleQueryCache(column.fk_model_id, null, ncMeta); } public getValidators(): any { diff --git a/packages/nocodb/src/models/Filter.ts b/packages/nocodb/src/models/Filter.ts index 9cb310b6a2..e0dfda0d57 100644 --- a/packages/nocodb/src/models/Filter.ts +++ b/packages/nocodb/src/models/Filter.ts @@ -213,7 +213,7 @@ export default class Filter implements FilterType { if (filter.fk_view_id) { const view = await View.get(filter.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } } @@ -253,7 +253,7 @@ export default class Filter implements FilterType { const view = await View.get(filter.fk_view_id, ncMeta); await View.clearSingleQueryCache(view.fk_model_id, [ { id: filter.fk_view_id }, - ]); + ], ncMeta); } } @@ -283,7 +283,7 @@ export default class Filter implements FilterType { await View.clearSingleQueryCache(view.fk_model_id, [ { id: filter.fk_view_id }, - ]); + ], ncMeta); } } } @@ -437,7 +437,7 @@ export default class Filter implements FilterType { // on update delete any optimised single query cache { const view = await View.get(viewId, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } } diff --git a/packages/nocodb/src/models/GalleryViewColumn.ts b/packages/nocodb/src/models/GalleryViewColumn.ts index ac84eb7e33..c893b7aa30 100644 --- a/packages/nocodb/src/models/GalleryViewColumn.ts +++ b/packages/nocodb/src/models/GalleryViewColumn.ts @@ -81,7 +81,7 @@ export default class GalleryViewColumn { // on new view column, delete any optimised single query cache { const view = await View.get(column.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } return this.get(id, ncMeta).then(async (viewColumn) => { diff --git a/packages/nocodb/src/models/GridViewColumn.ts b/packages/nocodb/src/models/GridViewColumn.ts index 616b4d0428..e5ab0fbdf9 100644 --- a/packages/nocodb/src/models/GridViewColumn.ts +++ b/packages/nocodb/src/models/GridViewColumn.ts @@ -114,7 +114,7 @@ export default class GridViewColumn implements GridColumnType { // on new view column, delete any optimised single query cache { const view = await View.get(column.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } return this.get(id, ncMeta).then(async (viewColumn) => { @@ -159,7 +159,7 @@ export default class GridViewColumn implements GridColumnType { { const gridCol = await this.get(columnId, ncMeta); const view = await View.get(gridCol.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } return res; diff --git a/packages/nocodb/src/models/Model.ts b/packages/nocodb/src/models/Model.ts index 551141ae5a..1e20274721 100644 --- a/packages/nocodb/src/models/Model.ts +++ b/packages/nocodb/src/models/Model.ts @@ -677,7 +677,7 @@ export default class Model implements TableType { ]); // clear all the cached query under this model - await View.clearSingleQueryCache(tableId); + await View.clearSingleQueryCache(tableId, null, ncMeta); // clear all the cached query under related models for (const col of await this.get(tableId).then((t) => t.getColumns())) { @@ -687,7 +687,7 @@ export default class Model implements TableType { if (colOptions.fk_related_model_id === tableId) continue; - await View.clearSingleQueryCache(colOptions.fk_related_model_id); + await View.clearSingleQueryCache(colOptions.fk_related_model_id, null, ncMeta); } return res; diff --git a/packages/nocodb/src/models/Sort.ts b/packages/nocodb/src/models/Sort.ts index efe7f22eb9..29b61219a3 100644 --- a/packages/nocodb/src/models/Sort.ts +++ b/packages/nocodb/src/models/Sort.ts @@ -37,7 +37,7 @@ export default class Sort { // on delete, delete any optimised single query cache { const view = await View.get(viewId, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } } @@ -95,7 +95,7 @@ export default class Sort { // on insert, delete any optimised single query cache { const view = await View.get(row.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view],ncMeta); } return this.get(row.id, ncMeta).then(async (sort) => { @@ -169,7 +169,7 @@ export default class Sort { { const sort = await this.get(sortId, ncMeta); const view = await View.get(sort.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } return res; @@ -188,7 +188,7 @@ export default class Sort { // on delete, delete any optimised single query cache if (sort?.fk_view_id) { const view = await View.get(sort.fk_view_id, ncMeta); - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); } } diff --git a/packages/nocodb/src/models/View.ts b/packages/nocodb/src/models/View.ts index ef20b0c05a..4ca179c572 100644 --- a/packages/nocodb/src/models/View.ts +++ b/packages/nocodb/src/models/View.ts @@ -878,7 +878,7 @@ export default class View implements ViewType { await NocoCache.update(`${cacheScope}:${colId}`, updateObj); // on view column update, delete corresponding single query cache - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); return res; } @@ -920,7 +920,7 @@ export default class View implements ViewType { ); // on view column update, delete any optimised single query cache - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); return { ...existingCol, ...colData }; } else { @@ -1137,7 +1137,7 @@ export default class View implements ViewType { } // on update, delete any optimised single query cache - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); return view; } @@ -1188,7 +1188,7 @@ export default class View implements ViewType { ]); // on update, delete any optimised single query cache - await View.clearSingleQueryCache(view.fk_model_id, [view]); + await View.clearSingleQueryCache(view.fk_model_id, [view], ncMeta); await Model.getNonDefaultViewsCountAndReset( { modelId: view.fk_model_id }, @@ -1472,37 +1472,11 @@ export default class View implements ViewType { } public static async clearSingleQueryCache( - modelId: string, - views?: { id?: string }[], - ncMeta = Noco.ncMeta, + _modelId: string, + _views?: { id?: string }[], + _ncMeta = Noco.ncMeta, ) { - // get all views of the model - let viewsList = - views || (await NocoCache.getList(CacheScope.VIEW, [modelId])).list; - - if (!views && !viewsList?.length) { - viewsList = await ncMeta.metaList2(null, null, MetaTable.VIEWS, { - condition: { - fk_model_id: modelId, - }, - }); - } - - const deleteKeys = []; - - for (const view of viewsList) { - deleteKeys.push( - `${CacheScope.SINGLE_QUERY}:${modelId}:${view.id}:queries`, - `${CacheScope.SINGLE_QUERY}:${modelId}:${view.id}:read`, - ); - } - - deleteKeys.push( - `${CacheScope.SINGLE_QUERY}:${modelId}:default:queries`, - `${CacheScope.SINGLE_QUERY}:${modelId}:default:read`, - ); - - await NocoCache.del(deleteKeys); + // do nothing } static async bulkColumnInsertToViews(