remove unnecessary fields from item events

This commit is contained in:
Hongbo Wu
2024-03-18 11:24:16 +08:00
parent 208a5895ef
commit a49366b4cc
5 changed files with 41 additions and 55 deletions

View File

@ -16,6 +16,7 @@ export interface TriggerRuleJobData {
libraryItemId: string
userId: string
ruleEventType: RuleEventType
data: unknown
}
interface RuleActionObj {

View File

@ -4,7 +4,6 @@ import { RuleEventType } from './entity/rule'
import { env } from './env'
import { ReportType } from './generated/graphql'
import { FeatureName, findFeatureByName } from './services/features'
import { Merge } from './util'
import {
enqueueAISummarizeJob,
enqueueExportItem,
@ -19,11 +18,6 @@ const logger = buildLogger('pubsub')
const client = new PubSub()
type EntityData<T extends Record<string, any>> = Merge<
T,
{ libraryItemId: string }
>
const isYouTubeVideoURL = (url: string | undefined): boolean => {
if (!url) {
return false
@ -68,16 +62,17 @@ export const createPubSubClient = (): PubsubClient => {
},
entityCreated: async <T extends Record<string, any>>(
type: EntityType,
data: EntityData<T>,
userId: string
data: T,
userId: string,
libraryItemId: string
): Promise<void> => {
const libraryItemId = data.libraryItemId
// queue trigger rule job
if (type === EntityType.PAGE) {
await enqueueTriggerRuleJob({
userId,
ruleEventType: RuleEventType.PageCreated,
libraryItemId,
data,
})
}
// queue export item job
@ -112,17 +107,17 @@ export const createPubSubClient = (): PubsubClient => {
},
entityUpdated: async <T extends Record<string, any>>(
type: EntityType,
data: EntityData<T>,
userId: string
data: T,
userId: string,
libraryItemId: string
): Promise<void> => {
const libraryItemId = data.libraryItemId
// queue trigger rule job
if (type === EntityType.PAGE) {
await enqueueTriggerRuleJob({
userId,
ruleEventType: RuleEventType.PageUpdated,
libraryItemId,
data,
})
}
// queue export item job
@ -178,13 +173,15 @@ export interface PubsubClient {
) => Promise<void>
entityCreated: <T extends Record<string, any>>(
type: EntityType,
data: EntityData<T>,
userId: string
data: T,
userId: string,
libraryItemId: string
) => Promise<void>
entityUpdated: <T extends Record<string, any>>(
type: EntityType,
data: EntityData<T>,
userId: string
data: T,
userId: string,
libraryItemId: string
) => Promise<void>
entityDeleted: (type: EntityType, id: string, userId: string) => Promise<void>
reportSubmitted(

View File

@ -59,7 +59,8 @@ export const createHighlight = async (
await pubsub.entityCreated<CreateHighlightEvent>(
EntityType.HIGHLIGHT,
{ ...newHighlight, pageId: libraryItemId },
userId
userId,
libraryItemId
)
await enqueueUpdateHighlight({
@ -106,7 +107,8 @@ export const mergeHighlights = async (
await pubsub.entityCreated<CreateHighlightEvent>(
EntityType.HIGHLIGHT,
{ ...newHighlight, pageId: libraryItemId },
userId
userId,
libraryItemId
)
await enqueueUpdateHighlight({
@ -139,8 +141,9 @@ export const updateHighlight = async (
const libraryItemId = updatedHighlight.libraryItem.id
await pubsub.entityUpdated<UpdateHighlightEvent>(
EntityType.HIGHLIGHT,
{ ...highlight, id: highlightId, pageId: libraryItemId, libraryItemId },
userId
{ ...highlight, id: highlightId, pageId: libraryItemId },
userId,
libraryItemId
)
await enqueueUpdateHighlight({

View File

@ -11,13 +11,11 @@ import { findHighlightById } from './highlights'
import { findLibraryItemIdsByLabelId } from './library_item'
type AddLabelsToLibraryItemEvent = {
libraryItemId: string
pageId: string
labels: DeepPartial<Label>[]
source?: LabelSource
}
type AddLabelsToHighlightEvent = {
libraryItemId: string
highlightId: string
labels: DeepPartial<Label>[]
}
@ -148,8 +146,9 @@ export const saveLabelsInLibraryItem = async (
// create pubsub event
await pubsub.entityCreated<AddLabelsToLibraryItemEvent>(
EntityType.LABEL,
{ pageId: libraryItemId, labels, source, libraryItemId },
userId
{ pageId: libraryItemId, labels, source },
userId,
libraryItemId
)
}
@ -218,8 +217,9 @@ export const saveLabelsInHighlight = async (
// create pubsub event
await pubsub.entityCreated<AddLabelsToHighlightEvent>(
EntityType.LABEL,
{ highlightId, labels, libraryItemId },
userId
{ highlightId, labels },
userId,
libraryItemId
)
// update labels in library item

View File

@ -29,7 +29,6 @@ import { logger } from '../utils/logger'
import { parseSearchQuery } from '../utils/search'
import { addLabelsToLibraryItem } from './labels'
type ItemEvent = { libraryItemId: string; userId: string }
type IgnoredFields =
| 'user'
| 'uploadFile'
@ -39,14 +38,10 @@ type IgnoredFields =
| 'links'
| 'recommenderNames'
| 'textContentHash'
type CreateItemEvent = Merge<
Omit<DeepPartial<LibraryItem>, IgnoredFields>,
ItemEvent
>
type UpdateItemEvent = Merge<
Omit<QueryDeepPartialEntity<LibraryItem>, IgnoredFields>,
ItemEvent
export type CreateItemEvent = Omit<DeepPartial<LibraryItem>, IgnoredFields>
export type UpdateItemEvent = Omit<
QueryDeepPartialEntity<LibraryItem>,
IgnoredFields
>
enum ReadFilter {
@ -861,12 +856,9 @@ export const updateLibraryItem = async (
// send create event if the item was created
await pubsub.entityCreated<CreateItemEvent>(
EntityType.PAGE,
{
...updatedLibraryItem,
libraryItemId: id,
userId,
},
userId
updatedLibraryItem,
userId,
id
)
return updatedLibraryItem
@ -874,13 +866,9 @@ export const updateLibraryItem = async (
await pubsub.entityUpdated<UpdateItemEvent>(
EntityType.PAGE,
{
...libraryItem,
id,
libraryItemId: id,
userId,
},
userId
libraryItem,
userId,
id
)
return updatedLibraryItem
@ -1034,12 +1022,9 @@ export const createOrUpdateLibraryItem = async (
await pubsub.entityCreated<CreateItemEvent>(
EntityType.PAGE,
{
...newLibraryItem,
libraryItemId: newLibraryItem.id,
userId,
},
userId
newLibraryItem,
userId,
newLibraryItem.id
)
return newLibraryItem