From 6776cdf1cd72eb99630b1e278aa3e94079fd6f3f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 24 Jul 2024 15:59:22 +0800 Subject: [PATCH] check if there are more than five items "created" within a minute instead of "saved" --- packages/api/src/services/create_page_save_request.ts | 11 ++++++++--- packages/api/src/services/library_item.ts | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/api/src/services/create_page_save_request.ts b/packages/api/src/services/create_page_save_request.ts index 8e2470e2c..8945d4e95 100644 --- a/packages/api/src/services/create_page_save_request.ts +++ b/packages/api/src/services/create_page_save_request.ts @@ -8,11 +8,10 @@ import { PageType, } from '../generated/graphql' import { createPubSubClient, PubsubClient } from '../pubsub' -import { Merge } from '../util' import { enqueueParseRequest } from '../utils/createTask' import { cleanUrl, generateSlug } from '../utils/helpers' import { logger } from '../utils/logger' -import { countBySavedAt, createOrUpdateLibraryItem } from './library_item' +import { countByCreatedAt, createOrUpdateLibraryItem } from './library_item' interface PageSaveRequest { user: User @@ -39,7 +38,13 @@ const isPrivateIP = privateIpLib.default const getPriorityByRateLimit = async ( userId: string ): Promise<'low' | 'high'> => { - const count = await countBySavedAt(userId, new Date(Date.now() - 60 * 1000)) + const now = new Date() + const count = await countByCreatedAt( + userId, + new Date(now.getTime() - 60 * 1000), // 1 minute ago + now + ) + return count >= 5 ? 'low' : 'high' } diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index b7c838202..37200da5c 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -1192,7 +1192,7 @@ export const findLibraryItemsByPrefix = async ( ) } -export const countBySavedAt = async ( +export const countByCreatedAt = async ( userId: string, startDate = new Date(0), endDate = new Date() @@ -1202,7 +1202,7 @@ export const countBySavedAt = async ( tx .createQueryBuilder(LibraryItem, 'library_item') .where('library_item.user_id = :userId', { userId }) - .andWhere('library_item.saved_at between :startDate and :endDate', { + .andWhere('library_item.created_at between :startDate and :endDate', { startDate, endDate, })