| 123456789101112131415161718192021222324252627282930313233343536 |
- import type { IUserHasId } from '@growi/core/dist/interfaces';
- import type { HydratedDocument } from 'mongoose';
- import mongoose from 'mongoose';
- import type { PageDocument, PageModel } from '~/server/models/page';
- import loggerFactory from '~/utils/logger';
- const logger = loggerFactory('growi:events:page:seen');
- export const onSeen = async (
- pageId: string,
- user: IUserHasId,
- ): Promise<void> => {
- if (pageId == null || user == null) {
- logger.warn('onSeen: pageId or user is null');
- return;
- }
- try {
- const Page = mongoose.model<HydratedDocument<PageDocument>, PageModel>(
- 'Page',
- );
- const page = await Page.findById(pageId);
- if (page == null) {
- logger.warn({ pageId }, 'onSeen: page not found');
- return;
- }
- await page.seen(user);
- logger.debug({ pageId }, 'onSeen: successfully marked page as seen');
- } catch (err) {
- logger.error({ err }, 'onSeen: failed to mark page as seen');
- }
- };
|