Browse Source

feat: cache on list

pull/5502/head
Wing-Kam Wong 1 year ago
parent
commit
904e24de69
  1. 6
      packages/nocodb-nest/src/models/Base.ts
  2. 82
      packages/nocodb-nest/src/models/Column.ts
  3. 38
      packages/nocodb-nest/src/models/Filter.ts
  4. 18
      packages/nocodb-nest/src/models/FormViewColumn.ts
  5. 18
      packages/nocodb-nest/src/models/GalleryViewColumn.ts
  6. 19
      packages/nocodb-nest/src/models/GridViewColumn.ts
  7. 8
      packages/nocodb-nest/src/models/Hook.ts
  8. 18
      packages/nocodb-nest/src/models/HookFilter.ts
  9. 6
      packages/nocodb-nest/src/models/KanbanViewColumn.ts
  10. 16
      packages/nocodb-nest/src/models/MapViewColumn.ts
  11. 27
      packages/nocodb-nest/src/models/Model.ts
  12. 11
      packages/nocodb-nest/src/models/ModelRoleVisibility.ts
  13. 6
      packages/nocodb-nest/src/models/Plugin.ts
  14. 6
      packages/nocodb-nest/src/models/Project.ts
  15. 12
      packages/nocodb-nest/src/models/ProjectUser.ts
  16. 6
      packages/nocodb-nest/src/models/SelectOption.ts
  17. 6
      packages/nocodb-nest/src/models/Sort.ts
  18. 24
      packages/nocodb-nest/src/models/View.ts

6
packages/nocodb-nest/src/models/Base.ts

@ -153,10 +153,12 @@ export default class Base implements BaseType {
args: { projectId: string }, args: { projectId: string },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Base[]> { ): Promise<Base[]> {
let baseDataList = await NocoCache.getList(CacheScope.BASE, [ const cachedList = await NocoCache.getList(CacheScope.BASE, [
args.projectId, args.projectId,
]); ]);
if (!baseDataList.length) { let { list: baseDataList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !baseDataList.length) {
baseDataList = await ncMeta.metaList2( baseDataList = await ncMeta.metaList2(
args.projectId, args.projectId,
null, null,

82
packages/nocodb-nest/src/models/Column.ts

@ -474,8 +474,12 @@ export default class Column<T = any> implements ColumnType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Column[]> { ): Promise<Column[]> {
let columnsList = await NocoCache.getList(CacheScope.COLUMN, [fk_model_id]); const cachedList = await NocoCache.getList(CacheScope.COLUMN, [
if (!columnsList.length) { fk_model_id,
]);
let { list: columnsList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !columnsList.length) {
columnsList = await ncMeta.metaList2(null, null, MetaTable.COLUMNS, { columnsList = await ncMeta.metaList2(null, null, MetaTable.COLUMNS, {
condition: { condition: {
fk_model_id, fk_model_id,
@ -627,8 +631,10 @@ export default class Column<T = any> implements ColumnType {
// get lookup columns and delete // get lookup columns and delete
{ {
let lookups = await NocoCache.getList(CacheScope.COL_LOOKUP, [id]); const cachedList = await NocoCache.getList(CacheScope.COL_LOOKUP, [id]);
if (!lookups.length) { let { list: lookups } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !lookups.length) {
lookups = await ncMeta.metaList2(null, null, MetaTable.COL_LOOKUP, { lookups = await ncMeta.metaList2(null, null, MetaTable.COL_LOOKUP, {
condition: { fk_lookup_column_id: id }, condition: { fk_lookup_column_id: id },
}); });
@ -640,8 +646,10 @@ export default class Column<T = any> implements ColumnType {
// get rollup column and delete // get rollup column and delete
{ {
let rollups = await NocoCache.getList(CacheScope.COL_ROLLUP, [id]); const cachedList = await NocoCache.getList(CacheScope.COL_ROLLUP, [id]);
if (!rollups.length) { let { list: rollups } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !rollups.length) {
rollups = await ncMeta.metaList2(null, null, MetaTable.COL_ROLLUP, { rollups = await ncMeta.metaList2(null, null, MetaTable.COL_ROLLUP, {
condition: { fk_rollup_column_id: id }, condition: { fk_rollup_column_id: id },
}); });
@ -652,10 +660,12 @@ export default class Column<T = any> implements ColumnType {
} }
{ {
let formulaColumns = await NocoCache.getList(CacheScope.COLUMN, [ const cachedList = await NocoCache.getList(CacheScope.COLUMN, [
col.fk_model_id, col.fk_model_id,
]); ]);
if (!formulaColumns.length) { let { list: formulaColumns } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !formulaColumns.length) {
formulaColumns = await ncMeta.metaList2(null, null, MetaTable.COLUMNS, { formulaColumns = await ncMeta.metaList2(null, null, MetaTable.COLUMNS, {
condition: { condition: {
fk_model_id: col.fk_model_id, fk_model_id: col.fk_model_id,
@ -682,33 +692,43 @@ export default class Column<T = any> implements ColumnType {
// if relation column check lookup and rollup and delete // if relation column check lookup and rollup and delete
if (col.uidt === UITypes.LinkToAnotherRecord) { if (col.uidt === UITypes.LinkToAnotherRecord) {
// get lookup columns using relation and delete {
let lookups = await NocoCache.getList(CacheScope.COL_LOOKUP, [id]); // get lookup columns using relation and delete
if (!lookups.length) { const cachedList = await NocoCache.getList(CacheScope.COL_LOOKUP, [id]);
lookups = await ncMeta.metaList2(null, null, MetaTable.COL_LOOKUP, { let { list: lookups } = cachedList;
condition: { fk_relation_column_id: id }, const { isNoneList } = cachedList;
}); if (!isNoneList && !lookups.length) {
} lookups = await ncMeta.metaList2(null, null, MetaTable.COL_LOOKUP, {
for (const lookup of lookups) { condition: { fk_relation_column_id: id },
await Column.delete(lookup.fk_column_id, ncMeta); });
}
for (const lookup of lookups) {
await Column.delete(lookup.fk_column_id, ncMeta);
}
} }
// get rollup columns using relation and delete {
let rollups = await NocoCache.getList(CacheScope.COL_ROLLUP, [id]); // get rollup columns using relation and delete
if (!rollups.length) { const cachedList = await NocoCache.getList(CacheScope.COL_ROLLUP, [id]);
rollups = await ncMeta.metaList2(null, null, MetaTable.COL_ROLLUP, { let { list: rollups } = cachedList;
condition: { fk_relation_column_id: id }, const { isNoneList } = cachedList;
}); if (!isNoneList && !rollups.length) {
} rollups = await ncMeta.metaList2(null, null, MetaTable.COL_ROLLUP, {
for (const rollup of rollups) { condition: { fk_relation_column_id: id },
await Column.delete(rollup.fk_column_id, ncMeta); });
}
for (const rollup of rollups) {
await Column.delete(rollup.fk_column_id, ncMeta);
}
} }
} }
// delete sorts // delete sorts
{ {
let sorts = await NocoCache.getList(CacheScope.SORT, [id]); const cachedList = await NocoCache.getList(CacheScope.SORT, [id]);
if (!sorts.length) { let { list: sorts } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !sorts.length) {
sorts = await ncMeta.metaList2(null, null, MetaTable.SORT, { sorts = await ncMeta.metaList2(null, null, MetaTable.SORT, {
condition: { condition: {
fk_column_id: id, fk_column_id: id,
@ -721,8 +741,10 @@ export default class Column<T = any> implements ColumnType {
} }
// delete filters // delete filters
{ {
let filters = await NocoCache.getList(CacheScope.FILTER_EXP, [id]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [id]);
if (!filters.length) { let { list: filters } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filters.length) {
filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { condition: {
fk_column_id: id, fk_column_id: id,

38
packages/nocodb-nest/src/models/Filter.ts

@ -326,10 +326,12 @@ export default class Filter implements FilterType {
public async getChildren(ncMeta = Noco.ncMeta): Promise<Filter[]> { public async getChildren(ncMeta = Noco.ncMeta): Promise<Filter[]> {
if (this.children) return this.children; if (this.children) return this.children;
if (!this.is_group) return null; if (!this.is_group) return null;
let childFilters = await NocoCache.getList(CacheScope.FILTER_EXP, [ const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [
this.id, this.id,
]); ]);
if (!childFilters.length) { let { list: childFilters } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !childFilters.length) {
childFilters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { childFilters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { condition: {
fk_parent_id: this.id, fk_parent_id: this.id,
@ -369,10 +371,12 @@ export default class Filter implements FilterType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<FilterType> { ): Promise<FilterType> {
let filters = await NocoCache.getList(CacheScope.FILTER_EXP, [ const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [
viewId || hookId, viewId || hookId,
]); ]);
if (!filters.length) { let { list: filters } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filters.length) {
filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: viewId ? { fk_view_id: viewId } : { fk_hook_id: hookId }, condition: viewId ? { fk_view_id: viewId } : { fk_hook_id: hookId },
orderBy: { orderBy: {
@ -480,8 +484,10 @@ export default class Filter implements FilterType {
{ viewId }: { viewId: any }, { viewId }: { viewId: any },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let filterObjs = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]);
if (!filterObjs.length) { let { list: filterObjs } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filterObjs.length) {
filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { fk_view_id: viewId }, condition: { fk_view_id: viewId },
orderBy: { orderBy: {
@ -499,8 +505,10 @@ export default class Filter implements FilterType {
{ hookId }: { hookId: any }, { hookId }: { hookId: any },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let filterObjs = await NocoCache.getList(CacheScope.FILTER_EXP, [hookId]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [hookId]);
if (!filterObjs.length) { let { list: filterObjs } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filterObjs.length) {
filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { fk_hook_id: hookId }, condition: { fk_hook_id: hookId },
orderBy: { orderBy: {
@ -520,8 +528,12 @@ export default class Filter implements FilterType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let filterObjs = await NocoCache.getList(CacheScope.FILTER_EXP, [parentId]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [
if (!filterObjs.length) { parentId,
]);
let { list: filterObjs } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filterObjs.length) {
filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { condition: {
fk_parent_id: parentId, fk_parent_id: parentId,
@ -546,11 +558,13 @@ export default class Filter implements FilterType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let filterObjs = await NocoCache.getList(CacheScope.FILTER_EXP, [ const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [
hookId, hookId,
parentId, parentId,
]); ]);
if (!filterObjs.length) { let { list: filterObjs } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filterObjs.length) {
filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { condition: {
fk_parent_id: parentId, fk_parent_id: parentId,

18
packages/nocodb-nest/src/models/FormViewColumn.ts

@ -100,13 +100,11 @@ export default class FormViewColumn implements FormColumnType {
await NocoCache.set(`${CacheScope.FORM_VIEW_COLUMN}:${fk_column_id}`, id); await NocoCache.set(`${CacheScope.FORM_VIEW_COLUMN}:${fk_column_id}`, id);
// if cache is not present skip pushing it into the list to avoid unexpected behaviour // if cache is not present skip pushing it into the list to avoid unexpected behaviour
if ( const { list } = await NocoCache.getList(CacheScope.FORM_VIEW_COLUMN, [
( column.fk_view_id,
await NocoCache.getList(CacheScope.FORM_VIEW_COLUMN, [ ]);
column.fk_view_id,
]) if (list?.length)
)?.length
)
await NocoCache.appendToList( await NocoCache.appendToList(
CacheScope.FORM_VIEW_COLUMN, CacheScope.FORM_VIEW_COLUMN,
[column.fk_view_id], [column.fk_view_id],
@ -119,10 +117,12 @@ export default class FormViewColumn implements FormColumnType {
viewId: string, viewId: string,
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<FormViewColumn[]> { ): Promise<FormViewColumn[]> {
let viewColumns = await NocoCache.getList(CacheScope.FORM_VIEW_COLUMN, [ const cachedList = await NocoCache.getList(CacheScope.FORM_VIEW_COLUMN, [
viewId, viewId,
]); ]);
if (!viewColumns.length) { let { list: viewColumns } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !viewColumns.length) {
viewColumns = await ncMeta.metaList2( viewColumns = await ncMeta.metaList2(
null, null,
null, null,

18
packages/nocodb-nest/src/models/GalleryViewColumn.ts

@ -79,13 +79,11 @@ export default class GalleryViewColumn {
); );
// if cache is not present skip pushing it into the list to avoid unexpected behaviour // if cache is not present skip pushing it into the list to avoid unexpected behaviour
if ( const { list } = await NocoCache.getList(CacheScope.GALLERY_VIEW_COLUMN, [
( column.fk_view_id,
await NocoCache.getList(CacheScope.GALLERY_VIEW_COLUMN, [ ]);
column.fk_view_id,
]) if (list?.length)
)?.length
)
await NocoCache.appendToList( await NocoCache.appendToList(
CacheScope.GALLERY_VIEW_COLUMN, CacheScope.GALLERY_VIEW_COLUMN,
[column.fk_view_id], [column.fk_view_id],
@ -99,10 +97,12 @@ export default class GalleryViewColumn {
viewId: string, viewId: string,
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<GalleryViewColumn[]> { ): Promise<GalleryViewColumn[]> {
let views = await NocoCache.getList(CacheScope.GALLERY_VIEW_COLUMN, [ const cachedList = await NocoCache.getList(CacheScope.GALLERY_VIEW_COLUMN, [
viewId, viewId,
]); ]);
if (!views.length) { let { list: views } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !views.length) {
views = await ncMeta.metaList2( views = await ncMeta.metaList2(
null, null,
null, null,

19
packages/nocodb-nest/src/models/GridViewColumn.ts

@ -24,8 +24,12 @@ export default class GridViewColumn implements GridColumnType {
viewId: string, viewId: string,
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<GridViewColumn[]> { ): Promise<GridViewColumn[]> {
let views = await NocoCache.getList(CacheScope.GRID_VIEW_COLUMN, [viewId]); const cachedList = await NocoCache.getList(CacheScope.GRID_VIEW_COLUMN, [
if (!views.length) { viewId,
]);
let { list: views } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !views.length) {
views = await ncMeta.metaList2(null, null, MetaTable.GRID_VIEW_COLUMNS, { views = await ncMeta.metaList2(null, null, MetaTable.GRID_VIEW_COLUMNS, {
condition: { condition: {
fk_view_id: viewId, fk_view_id: viewId,
@ -99,13 +103,10 @@ export default class GridViewColumn implements GridColumnType {
await NocoCache.set(`${CacheScope.GRID_VIEW_COLUMN}:${fk_column_id}`, id); await NocoCache.set(`${CacheScope.GRID_VIEW_COLUMN}:${fk_column_id}`, id);
// if cache is not present skip pushing it into the list to avoid unexpected behaviour // if cache is not present skip pushing it into the list to avoid unexpected behaviour
if ( const { list } = await NocoCache.getList(CacheScope.GRID_VIEW_COLUMN, [
( column.fk_view_id,
await NocoCache.getList(CacheScope.GRID_VIEW_COLUMN, [ ]);
column.fk_view_id, if (list.length)
])
)?.length
)
await NocoCache.appendToList( await NocoCache.appendToList(
CacheScope.GRID_VIEW_COLUMN, CacheScope.GRID_VIEW_COLUMN,
[column.fk_view_id], [column.fk_view_id],

8
packages/nocodb-nest/src/models/Hook.ts

@ -85,8 +85,12 @@ export default class Hook implements HookType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let hooks = await NocoCache.getList(CacheScope.HOOK, [param.fk_model_id]); const cachedList = await NocoCache.getList(CacheScope.HOOK, [
if (!hooks.length) { param.fk_model_id,
]);
let { list: hooks } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !hooks.length) {
hooks = await ncMeta.metaList(null, null, MetaTable.HOOKS, { hooks = await ncMeta.metaList(null, null, MetaTable.HOOKS, {
condition: { condition: {
fk_model_id: param.fk_model_id, fk_model_id: param.fk_model_id,

18
packages/nocodb-nest/src/models/HookFilter.ts

@ -205,10 +205,12 @@ export default class Filter {
public async getChildren(ncMeta = Noco.ncMeta): Promise<Filter[]> { public async getChildren(ncMeta = Noco.ncMeta): Promise<Filter[]> {
if (this.children) return this.children; if (this.children) return this.children;
if (!this.is_group) return null; if (!this.is_group) return null;
let childFilters = await NocoCache.getList(CacheScope.FILTER_EXP, [ const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [
this.id, this.id,
]); ]);
if (!childFilters.length) { let { list: childFilters } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !childFilters.length) {
childFilters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { childFilters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { condition: {
fk_parent_id: this.id, fk_parent_id: this.id,
@ -243,8 +245,10 @@ export default class Filter {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<FilterType> { ): Promise<FilterType> {
let filters = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]);
if (!filters.length) { let { list: filters } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filters.length) {
filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filters = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { fk_view_id: viewId }, condition: { fk_view_id: viewId },
}); });
@ -327,8 +331,10 @@ export default class Filter {
{ viewId }: { viewId: any }, { viewId }: { viewId: any },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
) { ) {
let filterObjs = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]); const cachedList = await NocoCache.getList(CacheScope.FILTER_EXP, [viewId]);
if (!filterObjs.length) { let { list: filterObjs } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !filterObjs.length) {
filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, { filterObjs = await ncMeta.metaList2(null, null, MetaTable.FILTER_EXP, {
condition: { fk_view_id: viewId }, condition: { fk_view_id: viewId },
}); });

6
packages/nocodb-nest/src/models/KanbanViewColumn.ts

@ -85,10 +85,12 @@ export default class KanbanViewColumn implements KanbanColumnType {
viewId: string, viewId: string,
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<KanbanViewColumn[]> { ): Promise<KanbanViewColumn[]> {
let views = await NocoCache.getList(CacheScope.KANBAN_VIEW_COLUMN, [ const cachedList = await NocoCache.getList(CacheScope.KANBAN_VIEW_COLUMN, [
viewId, viewId,
]); ]);
if (!views.length) { let { list: views } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !views.length) {
views = await ncMeta.metaList2( views = await ncMeta.metaList2(
null, null,
null, null,

16
packages/nocodb-nest/src/models/MapViewColumn.ts

@ -67,10 +67,10 @@ export default class MapViewColumn {
await NocoCache.set(`${CacheScope.MAP_VIEW_COLUMN}:${fk_column_id}`, id); await NocoCache.set(`${CacheScope.MAP_VIEW_COLUMN}:${fk_column_id}`, id);
// if cache is not present skip pushing it into the list to avoid unexpected behaviour // if cache is not present skip pushing it into the list to avoid unexpected behaviour
if ( const { list } = await NocoCache.getList(CacheScope.MAP_VIEW_COLUMN, [
(await NocoCache.getList(CacheScope.MAP_VIEW_COLUMN, [column.fk_view_id])) column.fk_view_id,
?.length ]);
) if (list?.length)
await NocoCache.appendToList( await NocoCache.appendToList(
CacheScope.MAP_VIEW_COLUMN, CacheScope.MAP_VIEW_COLUMN,
[column.fk_view_id], [column.fk_view_id],
@ -84,8 +84,12 @@ export default class MapViewColumn {
viewId: string, viewId: string,
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<MapViewColumn[]> { ): Promise<MapViewColumn[]> {
let views = await NocoCache.getList(CacheScope.MAP_VIEW_COLUMN, [viewId]); const cachedList = await NocoCache.getList(CacheScope.MAP_VIEW_COLUMN, [
if (!views.length) { viewId,
]);
let { list: views } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !views.length) {
views = await ncMeta.metaList2(null, null, MetaTable.MAP_VIEW_COLUMNS, { views = await ncMeta.metaList2(null, null, MetaTable.MAP_VIEW_COLUMNS, {
condition: { condition: {
fk_view_id: viewId, fk_view_id: viewId,

27
packages/nocodb-nest/src/models/Model.ts

@ -161,13 +161,10 @@ export default class Model implements TableType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Model[]> { ): Promise<Model[]> {
let modelList = []; const cachedList = await NocoCache.getList(CacheScope.MODEL, [project_id]);
if (base_id) { let { list: modelList } = cachedList;
await NocoCache.getList(CacheScope.MODEL, [project_id, base_id]); const { isNoneList } = cachedList;
} else { if (!isNoneList && !modelList.length) {
await NocoCache.getList(CacheScope.MODEL, [project_id]);
}
if (!modelList.length) {
modelList = await ncMeta.metaList2( modelList = await ncMeta.metaList2(
project_id, project_id,
base_id, base_id,
@ -184,15 +181,7 @@ export default class Model implements TableType {
model.meta = parseMetaProp(model); model.meta = parseMetaProp(model);
} }
if (base_id) { await NocoCache.setList(CacheScope.MODEL, [project_id], modelList);
await NocoCache.setList(
CacheScope.MODEL,
[project_id, base_id],
modelList,
);
} else {
await NocoCache.setList(CacheScope.MODEL, [project_id], modelList);
}
} }
modelList.sort( modelList.sort(
(a, b) => (a, b) =>
@ -212,11 +201,13 @@ export default class Model implements TableType {
}, },
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Model[]> { ): Promise<Model[]> {
let modelList = await NocoCache.getList(CacheScope.MODEL, [ const cachedList = await NocoCache.getList(CacheScope.MODEL, [
project_id, project_id,
db_alias, db_alias,
]); ]);
if (!modelList.length) { let { list: modelList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !modelList.length) {
modelList = await ncMeta.metaList2( modelList = await ncMeta.metaList2(
project_id, project_id,
db_alias, db_alias,

11
packages/nocodb-nest/src/models/ModelRoleVisibility.ts

@ -24,10 +24,13 @@ export default class ModelRoleVisibility implements ModelRoleVisibilityType {
} }
static async list(projectId): Promise<ModelRoleVisibility[]> { static async list(projectId): Promise<ModelRoleVisibility[]> {
let data = await NocoCache.getList(CacheScope.MODEL_ROLE_VISIBILITY, [ const cachedList = await NocoCache.getList(
projectId, CacheScope.MODEL_ROLE_VISIBILITY,
]); [projectId],
if (!data.length) { );
let { list: data } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !data.length) {
data = await Noco.ncMeta.metaList2( data = await Noco.ncMeta.metaList2(
projectId, projectId,
null, null,

6
packages/nocodb-nest/src/models/Plugin.ts

@ -43,8 +43,10 @@ export default class Plugin implements PluginType {
} }
static async list(ncMeta = Noco.ncMeta) { static async list(ncMeta = Noco.ncMeta) {
let pluginList = await NocoCache.getList(CacheScope.PLUGIN, []); const cachedList = await NocoCache.getList(CacheScope.PLUGIN, []);
if (!pluginList.length) { let { list: pluginList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !pluginList.length) {
pluginList = await ncMeta.metaList2(null, null, MetaTable.PLUGIN); pluginList = await ncMeta.metaList2(null, null, MetaTable.PLUGIN);
await NocoCache.setList(CacheScope.PLUGIN, [], pluginList); await NocoCache.setList(CacheScope.PLUGIN, [], pluginList);
} }

6
packages/nocodb-nest/src/models/Project.ts

@ -79,8 +79,10 @@ export default class Project implements ProjectType {
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Project[]> { ): Promise<Project[]> {
// todo: pagination // todo: pagination
let projectList = await NocoCache.getList(CacheScope.PROJECT, []); const cachedList = await NocoCache.getList(CacheScope.PROJECT, []);
if (!projectList.length) { let { list: projectList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !projectList.length) {
projectList = await ncMeta.metaList2(null, null, MetaTable.PROJECT, { projectList = await ncMeta.metaList2(null, null, MetaTable.PROJECT, {
xcCondition: { xcCondition: {
_or: [ _or: [

12
packages/nocodb-nest/src/models/ProjectUser.ts

@ -187,10 +187,12 @@ export default class ProjectUser {
} }
// remove project from user project list cache // remove project from user project list cache
let cachedProjectList = await NocoCache.getList(CacheScope.USER_PROJECT, [ const cachedList = await NocoCache.getList(CacheScope.USER_PROJECT, [
userId, userId,
]); ]);
if (cachedProjectList?.length) { let { list: cachedProjectList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && cachedProjectList?.length) {
cachedProjectList = cachedProjectList.filter((p) => p.id !== projectId); cachedProjectList = cachedProjectList.filter((p) => p.id !== projectId);
await NocoCache.setList( await NocoCache.setList(
CacheScope.USER_PROJECT, CacheScope.USER_PROJECT,
@ -221,11 +223,13 @@ export default class ProjectUser {
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<ProjectType[]> { ): Promise<ProjectType[]> {
// todo: pagination // todo: pagination
let projectList = await NocoCache.getList(CacheScope.USER_PROJECT, [ const cachedList = await NocoCache.getList(CacheScope.USER_PROJECT, [
userId, userId,
]); ]);
let { list: projectList } = cachedList;
const { isNoneList } = cachedList;
if (projectList.length) { if (!isNoneList && projectList.length) {
return projectList; return projectList;
} }

6
packages/nocodb-nest/src/models/SelectOption.ts

@ -69,10 +69,12 @@ export default class SelectOption implements SelectOptionType {
} }
public static async read(fk_column_id: string, ncMeta = Noco.ncMeta) { public static async read(fk_column_id: string, ncMeta = Noco.ncMeta) {
let options = await NocoCache.getList(CacheScope.COL_SELECT_OPTION, [ const cachedList = await NocoCache.getList(CacheScope.COL_SELECT_OPTION, [
fk_column_id, fk_column_id,
]); ]);
if (!options.length) { let { list: options } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !options.length) {
options = await ncMeta.metaList2( options = await ncMeta.metaList2(
null, //, null, //,
null, //model.db_alias, null, //model.db_alias,

6
packages/nocodb-nest/src/models/Sort.ts

@ -114,8 +114,10 @@ export default class Sort {
ncMeta = Noco.ncMeta, ncMeta = Noco.ncMeta,
): Promise<Sort[]> { ): Promise<Sort[]> {
if (!viewId) return null; if (!viewId) return null;
let sortList = await NocoCache.getList(CacheScope.SORT, [viewId]); const cachedList = await NocoCache.getList(CacheScope.SORT, [viewId]);
if (!sortList.length) { let { list: sortList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !sortList.length) {
sortList = await ncMeta.metaList2(null, null, MetaTable.SORT, { sortList = await ncMeta.metaList2(null, null, MetaTable.SORT, {
condition: { fk_view_id: viewId }, condition: { fk_view_id: viewId },
orderBy: { orderBy: {

24
packages/nocodb-nest/src/models/View.ts

@ -205,8 +205,10 @@ export default class View implements ViewType {
} }
public static async list(modelId: string, ncMeta = Noco.ncMeta) { public static async list(modelId: string, ncMeta = Noco.ncMeta) {
let viewsList = await NocoCache.getList(CacheScope.VIEW, [modelId]); const cachedList = await NocoCache.getList(CacheScope.VIEW, [modelId]);
if (!viewsList.length) { let { list: viewsList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !viewsList.length) {
viewsList = await ncMeta.metaList2(null, null, MetaTable.VIEWS, { viewsList = await ncMeta.metaList2(null, null, MetaTable.VIEWS, {
condition: { condition: {
fk_model_id: modelId, fk_model_id: modelId,
@ -1123,8 +1125,10 @@ export default class View implements ViewType {
); );
// get existing cache // get existing cache
const dataList = await NocoCache.getList(scope, [viewId]); const cachedList = await NocoCache.getList(scope, [viewId]);
if (dataList?.length) { const { list: dataList } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && dataList?.length) {
for (const o of dataList) { for (const o of dataList) {
if (!ignoreColdIds?.length || !ignoreColdIds.includes(o.fk_column_id)) { if (!ignoreColdIds?.length || !ignoreColdIds.includes(o.fk_column_id)) {
// set data // set data
@ -1209,7 +1213,9 @@ export default class View implements ViewType {
} }
// get existing cache // get existing cache
const dataList = await NocoCache.getList(scope, [viewId]); const cachedList = await NocoCache.getList(scope, [viewId]);
const { list: dataList } = cachedList;
const { isNoneList } = cachedList;
const colsEssentialForView = const colsEssentialForView =
view.type === ViewTypes.MAP view.type === ViewTypes.MAP
@ -1218,7 +1224,7 @@ export default class View implements ViewType {
const mergedIgnoreColdIds = [...ignoreColdIds, ...colsEssentialForView]; const mergedIgnoreColdIds = [...ignoreColdIds, ...colsEssentialForView];
if (dataList?.length) { if (!isNoneList && dataList?.length) {
for (const o of dataList) { for (const o of dataList) {
if ( if (
!mergedIgnoreColdIds?.length || !mergedIgnoreColdIds?.length ||
@ -1257,8 +1263,10 @@ export default class View implements ViewType {
} }
static async shareViewList(tableId, ncMeta = Noco.ncMeta) { static async shareViewList(tableId, ncMeta = Noco.ncMeta) {
let sharedViews = await NocoCache.getList(CacheScope.VIEW, [tableId]); const cachedList = await NocoCache.getList(CacheScope.VIEW, [tableId]);
if (!sharedViews.length) { let { list: sharedViews } = cachedList;
const { isNoneList } = cachedList;
if (!isNoneList && !sharedViews.length) {
sharedViews = await ncMeta.metaList2(null, null, MetaTable.VIEWS, { sharedViews = await ncMeta.metaList2(null, null, MetaTable.VIEWS, {
xcCondition: { xcCondition: {
fk_model_id: { fk_model_id: {

Loading…
Cancel
Save