Browse Source

fix(nocodb): fix meta api cache

pull/7611/head
DarkPhoenix2704 8 months ago
parent
commit
93f2dec117
  1. 21
      packages/nocodb/src/controllers/calendars.controller.ts
  2. 5
      packages/nocodb/src/models/CalendarRange.ts
  3. 4
      packages/nocodb/src/models/CalendarView.ts
  4. 51
      packages/nocodb/src/services/calendars.service.ts

21
packages/nocodb/src/controllers/calendars.controller.ts

@ -1,4 +1,14 @@
import { Body, Controller, Get, HttpCode, Param, Patch, Post, Req, UseGuards } from '@nestjs/common';
import {
Body,
Controller,
Get,
HttpCode,
Param,
Patch,
Post,
Req,
UseGuards,
} from '@nestjs/common';
import { Request } from 'express';
import { ViewCreateReqType } from 'nocodb-sdk';
import { GlobalGuard } from '~/guards/global/global.guard';
@ -57,13 +67,4 @@ export class CalendarsController {
req,
});
}
@Get('/api/v1/db/data/calendars/:calendarViewId/count')
async calendarRecordCountGet(@Param('calendarViewId') calendarViewId: string, @Req() req: Request) {
return await this.calendarsService.calendarRecordCountGet({
calendarViewId,
req
});
}
}

5
packages/nocodb/src/models/CalendarRange.ts

@ -61,6 +61,11 @@ export default class CalendarRange implements CalendarRangeType {
MetaTable.CALENDAR_VIEW_RANGE,
insertObj,
);
// clear cache
const uniqueFks = [...new Set(bulkData.map((d) => d.fk_view_id))];
for (const fk of uniqueFks) {
await NocoCache.delAll(CacheScope.CALENDAR_VIEW_RANGE, `${fk}:*`);
}
for (const d of bulkData) {
await NocoCache.appendToList(

4
packages/nocodb/src/models/CalendarView.ts

@ -86,7 +86,7 @@ export default class CalendarView implements CalendarType {
ncMeta = Noco.ncMeta,
) {
// get existing cache
const key = `${CacheScope.CALENDAR_VIEW_COLUMN}:${calendarId}`;
const key = `${CacheScope.CALENDAR_VIEW}:${calendarId}`;
let o = await NocoCache.get(key, CacheGetType.TYPE_OBJECT);
const updateObj = extractProps(body, ['fk_cover_image_col_id', 'meta']);
@ -102,7 +102,7 @@ export default class CalendarView implements CalendarType {
}
if (body.calendar_range) {
await NocoCache.del(`${CacheScope.CALENDAR_VIEW_RANGE}:${calendarId}`);
await NocoCache.del(`${CacheScope.CALENDAR_VIEW}:${calendarId}`);
await ncMeta.metaDelete(
null,
null,

51
packages/nocodb/src/services/calendars.service.ts

@ -1,29 +1,22 @@
import { Injectable } from '@nestjs/common';
import type { CalendarUpdateReqType, UserType, ViewCreateReqType } from 'nocodb-sdk';
import { AppEvents, ViewTypes } from 'nocodb-sdk';
import type {
CalendarUpdateReqType,
UserType,
ViewCreateReqType,
} from 'nocodb-sdk';
import type { NcRequest } from '~/interface/config';
import { AppHooksService } from '~/services/app-hooks/app-hooks.service';
import { validatePayload } from '~/helpers';
import { NcError } from '~/helpers/catchError';
import { CalendarView, View } from '~/models';
import CalendarRange from '~/models/CalendarRange';
import { Model, Source } from '~/ee/models';
import NcConnectionMgrv2 from '~/ee/utils/common/NcConnectionMgrv2';
@Injectable()
export class CalendarsService {
constructor(private readonly appHooksService: AppHooksService) {}
async calendarViewGet(param: { calendarViewId: string }) {
const calendarView = await CalendarView.get(param.calendarViewId);
if (!calendarView) {
NcError.badRequest('Calendar view not found');
}
const calendarRanges = await CalendarRange.read(param.calendarViewId);
return {
...calendarView,
calendar_range: calendarRanges.ranges,
};
return await CalendarView.get(param.calendarViewId);
}
async calendarViewCreate(param: {
@ -81,36 +74,4 @@ export class CalendarsService {
return res;
}
async calendarRecordCountGet(param: {
calendarViewId: string;
req: any
}) {
const { query } = param.req;
console.log('query', query)
const view = await View.get(param.calendarViewId);
if (!view) {
NcError.badRequest('View not found');
}
const source = await Source.get(view.source_id);
const baseModel = await Model.getBaseModelSQL({
id: view.fk_model_id,
viewId: view?.id,
dbDriver: await NcConnectionMgrv2.get(source),
});
const data = await baseModel.groupByAndAggregate(
'Date',
'count',
{
groupByColumnName: 'Date',
},
);
console.log(data);
return data;
}
}

Loading…
Cancel
Save