From 0db5e5530f5f22b88bd246c30aa094c7f531f2f9 Mon Sep 17 00:00:00 2001 From: Katerina Chinnappan Date: Mon, 3 Feb 2025 14:27:34 -0800 Subject: [PATCH 1/3] MC-1646: replace ScheduleItemSource enum with ActivitySource enum --- lambdas/corpus-scheduler-lambda/src/utils.ts | 6 ++-- packages/content-common/src/types.ts | 9 ++---- .../curated-corpus-api/schema-admin.graphql | 24 ++++----------- .../createApprovedCorpusItem.integration.ts | 10 +++---- .../createScheduledItem.integration.ts | 26 ++++++++-------- .../mutations/ScheduledItem/index.ts | 4 +-- .../rescheduleScheduledItem.integration.ts | 30 +++++++++---------- .../getScheduledCorpusItems.integration.ts | 8 ++--- .../src/admin/resolvers/types.ts | 4 +-- .../curated-corpus-api/src/database/types.ts | 3 +- .../events/curatedCorpusEventEmitter.spec.ts | 4 +-- .../events/eventBus/EventBusHandler.spec.ts | 4 +-- ...cheduledItemSnowplowHandler.integration.ts | 30 +++++++++---------- .../src/events/snowplow/schema.ts | 4 +-- .../curated-corpus-api/src/events/types.ts | 4 +-- .../test/helpers/createScheduledItemHelper.ts | 6 ++-- 16 files changed, 78 insertions(+), 98 deletions(-) diff --git a/lambdas/corpus-scheduler-lambda/src/utils.ts b/lambdas/corpus-scheduler-lambda/src/utils.ts index 220b93df..f1e2a061 100644 --- a/lambdas/corpus-scheduler-lambda/src/utils.ts +++ b/lambdas/corpus-scheduler-lambda/src/utils.ts @@ -13,7 +13,7 @@ import { CreateApprovedCorpusItemApiInput, CreateScheduledItemInput, CuratedCorpusApiErrorCodes, - ScheduledItemSource, + ActivitySource, UrlMetadata, } from 'content-common'; import { @@ -265,7 +265,7 @@ export const mapScheduledCandidateInputToCreateApprovedCorpusItemApiInput = imageUrl: imageUrl, topic: topic, source: source, // source = Metaflow - scheduledSource: source as unknown as ScheduledItemSource.ML, + scheduledSource: source as unknown as ActivitySource.ML, isCollection: itemMetadata.isCollection as boolean, // source = Parser isSyndicated: itemMetadata.isSyndicated as boolean, // source = Parser isTimeSensitive: false, @@ -311,7 +311,7 @@ export const createCreateScheduledItemInput = async ( candidate.scheduled_corpus_item.scheduled_surface_guid, scheduledDate: candidate.scheduled_corpus_item.scheduled_date, source: candidate.scheduled_corpus_item - .source as unknown as ScheduledItemSource, + .source as unknown as ActivitySource, }; // assert itemToSchedule against CreateScheduledItemInput before sending to mutation assert(itemToSchedule); diff --git a/packages/content-common/src/types.ts b/packages/content-common/src/types.ts index eaeb9147..5896ea02 100644 --- a/packages/content-common/src/types.ts +++ b/packages/content-common/src/types.ts @@ -55,11 +55,6 @@ export enum ActivitySource { ML = 'ML', // created by ML } -export enum ScheduledItemSource { - MANUAL = 'MANUAL', // manually entered through the curation admin tool - ML = 'ML', // created by ML -} - export enum ActionScreen { PROSPECTING = 'PROSPECTING', SCHEDULE = 'SCHEDULE', @@ -107,7 +102,7 @@ export type CreateApprovedCorpusItemApiInput = ApprovedItemRequiredInput & { // Note that all three must be present to schedule the item. scheduledDate?: string; scheduledSurfaceGuid?: string; - scheduledSource?: ScheduledItemSource; + scheduledSource?: ActivitySource; // This is an optional property that may or may not be present at the time // a corpus item is saved in the datastore datePublished?: string; @@ -120,7 +115,7 @@ export type CreateScheduledItemInput = { approvedItemExternalId: string; scheduledSurfaceGuid: string; scheduledDate: string; - source: ScheduledItemSource; + source: ActivitySource; }; diff --git a/servers/curated-corpus-api/schema-admin.graphql b/servers/curated-corpus-api/schema-admin.graphql index 72b4de5c..5efae94f 100644 --- a/servers/curated-corpus-api/schema-admin.graphql +++ b/servers/curated-corpus-api/schema-admin.graphql @@ -169,20 +169,6 @@ enum CorpusItemSource { ML } -""" -The source of the Scheduled item -""" -enum ScheduledItemSource { - """ - Manually entered through the curation admin tool - """ - MANUAL - """ - Created by ML - """ - ML -} - """ Indicates where in the Curation Tools UI the action took place """ @@ -485,7 +471,7 @@ type ScheduledCorpusItem { """ Source of the Scheduled Item. Could be one of: MANUAL or ML """ - source: ScheduledItemSource! + source: ActivitySource! } """ @@ -826,7 +812,7 @@ input CreateApprovedCorpusItemInput { """ Optionally, specify the source of the Scheduled Item. Could be one of: MANUAL or ML """ - scheduledSource: ScheduledItemSource + scheduledSource: ActivitySource """ The UI screen where the approved corpus item is being created from. """ @@ -915,7 +901,7 @@ input ImportApprovedCorpusItemInput { This field was added after this import mutation was created. We may need to expand the enum value list if this mutation is used in the future. """ - scheduledSource: ScheduledItemSource! + scheduledSource: ActivitySource! } """ @@ -1070,7 +1056,7 @@ input CreateScheduledCorpusItemInput { """ Source of the Scheduled Item. Could be one of: MANUAL or ML """ - source: ScheduledItemSource! + source: ActivitySource! """ A comma-separated list of reasons for manually scheduling an item. Helps ML improve models for sets of scheduled items. """ @@ -1101,7 +1087,7 @@ input RescheduleScheduledCorpusItemInput { """ Source of the Scheduled Item. Could be one of: MANUAL or ML """ - source: ScheduledItemSource! + source: ActivitySource! """ The UI screen where the scheduled corpus item is being resceduled from. Can only be from the schedule screen. diff --git a/servers/curated-corpus-api/src/admin/resolvers/mutations/ApprovedItem/createApprovedCorpusItem.integration.ts b/servers/curated-corpus-api/src/admin/resolvers/mutations/ApprovedItem/createApprovedCorpusItem.integration.ts index a17648fc..de79e5e3 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/mutations/ApprovedItem/createApprovedCorpusItem.integration.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/mutations/ApprovedItem/createApprovedCorpusItem.integration.ts @@ -10,7 +10,7 @@ import { CreateApprovedCorpusItemApiInput, CorpusItemSource, CuratedStatus, - ScheduledItemSource, + ActivitySource, Topics, } from 'content-common'; @@ -256,7 +256,7 @@ describe('mutations: ApprovedItem (createApprovedCorpusItem)', () => { // extra inputs - all three must be set to create a scheduled item input.scheduledDate = '2100-01-01'; input.scheduledSurfaceGuid = 'NEW_TAB_EN_US'; - input.scheduledSource = ScheduledItemSource.ML; + input.scheduledSource = ActivitySource.ML; const result = await request(app) .post(graphQLUrl) @@ -310,7 +310,7 @@ describe('mutations: ApprovedItem (createApprovedCorpusItem)', () => { ); expect( emitScheduledCorpusItemEventArgs.scheduledCorpusItem.generated_by, - ).toEqual(ScheduledItemSource.ML); + ).toEqual(ActivitySource.ML); // 3- Events have the right entities passed to it. expect( @@ -329,7 +329,7 @@ describe('mutations: ApprovedItem (createApprovedCorpusItem)', () => { // extra inputs - all three must be set to create a scheduled item input.scheduledDate = '2100-01-01'; input.scheduledSurfaceGuid = 'NEW_TAB_EN_US'; - input.scheduledSource = ScheduledItemSource.ML; + input.scheduledSource = ActivitySource.ML; const pastApprovedItem = await createApprovedItemHelper(db, { url: `${input.url}/old-article`, @@ -451,7 +451,7 @@ describe('mutations: ApprovedItem (createApprovedCorpusItem)', () => { // extra inputs input.scheduledDate = '2100-01-01'; input.scheduledSurfaceGuid = 'RECSAPI'; - input.scheduledSource = ScheduledItemSource.ML; + input.scheduledSource = ActivitySource.ML; const result = await request(app) .post(graphQLUrl) diff --git a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/createScheduledItem.integration.ts b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/createScheduledItem.integration.ts index 743bb859..aa98684c 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/createScheduledItem.integration.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/createScheduledItem.integration.ts @@ -3,7 +3,7 @@ import request from 'supertest'; import { ApolloServer } from '@apollo/server'; import { PrismaClient } from '.prisma/client'; -import { ActionScreen, ScheduledItemSource } from 'content-common'; +import { ActionScreen, ActivitySource } from 'content-common'; import { client } from '../../../../database/client'; import { @@ -67,7 +67,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'RECSAPI', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }; const result = await request(app) @@ -100,7 +100,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: 'not-a-valid-id-at-all', scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', }; @@ -160,7 +160,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: item.externalId, scheduledSurfaceGuid: existingScheduledEntry.scheduledSurfaceGuid, scheduledDate, - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', }; @@ -205,7 +205,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', actionScreen: ActionScreen.SCHEDULE, @@ -251,7 +251,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', }; @@ -271,7 +271,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { expect(scheduledItem.createdAt).not.toBeNull(); expect(scheduledItem.updatedAt).not.toBeNull(); expect(scheduledItem.createdBy).toEqual(headers.username); - expect(scheduledItem.source).toEqual(ScheduledItemSource.MANUAL); + expect(scheduledItem.source).toEqual(ActivitySource.MANUAL); // Expect these to match the input values expect(new Date(scheduledItem.scheduledDate)).toStrictEqual( @@ -352,7 +352,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: newApprovedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: toUtcDateString(new Date()), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }; await request(app) @@ -380,7 +380,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: toUtcDateString(new Date()), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }; await request(app) @@ -411,7 +411,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: toUtcDateString(new Date()), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }; // Run the mutation @@ -448,7 +448,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', }; @@ -485,7 +485,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, reasons: `${ManualScheduleReason.EVERGREEN},${ManualScheduleReason.PUBLISHER_DIVERSITY}`, reasonComment: 'i scheduled this because i thought it would be nice', }; @@ -522,7 +522,7 @@ describe('mutations: ScheduledItem (createScheduledItem)', () => { approvedItemExternalId: approvedItem.externalId, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: '2100-01-01', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }; const result = await request(app) diff --git a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/index.ts b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/index.ts index 936a9ede..90654583 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/index.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/index.ts @@ -12,7 +12,7 @@ import { CuratedCorpusApiErrorCodes, parseReasonsCsv, sanitizeText, - ScheduledItemSource, + ActivitySource, } from 'content-common'; import config from '../../../../config'; @@ -88,7 +88,7 @@ export async function deleteScheduledItem( scheduledCorpusItem: { ...scheduledItem, action_screen: actionScreen, - generated_by: scheduledItem.source as ScheduledItemSource, + generated_by: scheduledItem.source as ActivitySource, // analytics requires a unique id per action on an existing scheduled // item. we create an ephemeral unique id for them here using the same // version of UUID that prisma uses. this service has no requirement to diff --git a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/rescheduleScheduledItem.integration.ts b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/rescheduleScheduledItem.integration.ts index e20140b7..eab06590 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/rescheduleScheduledItem.integration.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/mutations/ScheduledItem/rescheduleScheduledItem.integration.ts @@ -3,7 +3,7 @@ import request from 'supertest'; import { ApolloServer } from '@apollo/server'; import { PrismaClient } from '.prisma/client'; -import { ActionScreen, ScheduledItemSource } from 'content-common'; +import { ActionScreen, ActivitySource } from 'content-common'; import { client } from '../../../../database/client'; import { @@ -59,7 +59,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { const input: RescheduleScheduledItemApiInput = { externalId: 'not-a-valid-ID-string', scheduledDate: '2025-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }; const result = await request(app) @@ -97,7 +97,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { scheduledSurfaceGuid: 'NEW_TAB_EN_US', approvedItem, scheduledDate: new Date(2050, 4, 4).toISOString(), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }); const result = await request(app) @@ -109,7 +109,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { data: { externalId: scheduledItem.externalId, scheduledDate: '2050-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }, }, }); @@ -127,7 +127,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { // createdBy will be changed to the entity performing the reschedule expect(returnedItem.createdBy).toEqual(headers.username); // MANUAL was specified in the API call above - expect(returnedItem.source).toEqual(ScheduledItemSource.MANUAL); + expect(returnedItem.source).toEqual(ActivitySource.MANUAL); // as a new db row is created, the createdAt value on that row should be // *after* the createdAt of the originally scheduled item @@ -204,7 +204,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { approvedItem, // javascript uses 0-based month array, so this is really april 4th scheduledDate: new Date(2050, 3, 4).toISOString(), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }); const result = await request(app) @@ -217,7 +217,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { externalId: scheduledItem.externalId, // rescheduled for the same date! scheduledDate: '2050-04-04', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, actionScreen: ActionScreen.SCHEDULE, }, }, @@ -249,7 +249,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { scheduledSurfaceGuid: 'NEW_TAB_EN_US', approvedItem, scheduledDate: new Date(2050, 4, 4).toISOString(), - source: ScheduledItemSource.ML, + source: ActivitySource.ML, }); const result = await request(app) @@ -261,7 +261,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { data: { externalId: scheduledItem.externalId, scheduledDate: '2050-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, actionScreen: ActionScreen.SCHEDULE, }, }, @@ -289,7 +289,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { ); expect(rescheduleEventCall.scheduledCorpusItem.generated_by).toEqual( - ScheduledItemSource.MANUAL, + ActivitySource.MANUAL, ); expect(rescheduleEventCall.scheduledCorpusItem.status).toEqual( @@ -330,14 +330,14 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { approvedItem: item, scheduledSurfaceGuid: 'NEW_TAB_EN_US', scheduledDate: new Date(2050, 4, 5).toISOString(), - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }); // try to reschedule the second entry for the same date as the first const input: RescheduleScheduledItemApiInput = { externalId: existingScheduledEntry2.externalId, scheduledDate: '2050-05-04', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }; const result = await request(app) @@ -384,7 +384,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { data: { externalId: scheduledItem.externalId, scheduledDate: '2050-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }, }, }); @@ -424,7 +424,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { data: { externalId: scheduledItem.externalId, scheduledDate: '2050-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }, }, }); @@ -464,7 +464,7 @@ describe('mutations: ScheduledItem (rescheduleScheduledCorpusItem)', () => { data: { externalId: scheduledItem.externalId, scheduledDate: '2050-05-05', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }, }, }); diff --git a/servers/curated-corpus-api/src/admin/resolvers/queries/ScheduledItem/getScheduledCorpusItems.integration.ts b/servers/curated-corpus-api/src/admin/resolvers/queries/ScheduledItem/getScheduledCorpusItems.integration.ts index 25ab8a23..17579c95 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/queries/ScheduledItem/getScheduledCorpusItems.integration.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/queries/ScheduledItem/getScheduledCorpusItems.integration.ts @@ -4,7 +4,7 @@ import { ApolloServer } from '@apollo/server'; import { PrismaClient } from '.prisma/client'; import { client } from '../../../../database/client'; -import { ScheduledItemSource } from 'content-common'; +import { ActivitySource } from 'content-common'; import { clearDb, @@ -69,7 +69,7 @@ describe('queries: ScheduledCorpusItem (getScheduledCorpusItems)', () => { approvedItem, scheduledDate: new Date('2025-05-05').toISOString(), source: - i % 2 === 0 ? ScheduledItemSource.MANUAL : ScheduledItemSource.ML, + i % 2 === 0 ? ActivitySource.MANUAL : ActivitySource.ML, }); } }); @@ -196,13 +196,13 @@ describe('queries: ScheduledCorpusItem (getScheduledCorpusItems)', () => { // filter out MANUAL items const manualScheduledItems = resultArray[0].items.filter( - (item) => item.source === ScheduledItemSource.MANUAL, + (item) => item.source === ActivitySource.MANUAL, ); expect(manualScheduledItems.length).toEqual(5); // filter out ML items const mlScheduledItems = resultArray[0].items.filter( - (item) => item.source === ScheduledItemSource.ML, + (item) => item.source === ActivitySource.ML, ); expect(mlScheduledItems.length).toEqual(5); }); diff --git a/servers/curated-corpus-api/src/admin/resolvers/types.ts b/servers/curated-corpus-api/src/admin/resolvers/types.ts index c9b1a463..143b6c45 100644 --- a/servers/curated-corpus-api/src/admin/resolvers/types.ts +++ b/servers/curated-corpus-api/src/admin/resolvers/types.ts @@ -5,7 +5,7 @@ import { CorpusLanguage, CreateScheduledItemInput, CuratedStatus, - ScheduledItemSource, + ActivitySource, } from 'content-common'; // this maps to the UpdateApprovedCorpusItemInput graph input @@ -61,7 +61,7 @@ export type CreateRejectedCorpusItemApiInput = { export type RescheduleScheduledItemApiInput = { externalId: string; scheduledDate: string; - source: ScheduledItemSource; + source: ActivitySource; actionScreen?: ActionScreen; }; diff --git a/servers/curated-corpus-api/src/database/types.ts b/servers/curated-corpus-api/src/database/types.ts index 0cf38afe..fd46001c 100644 --- a/servers/curated-corpus-api/src/database/types.ts +++ b/servers/curated-corpus-api/src/database/types.ts @@ -13,7 +13,6 @@ import { ApprovedItemRequiredInput, CorpusItemSource, CorpusLanguage, - ScheduledItemSource, } from 'content-common'; export type CreateApprovedItemInput = { @@ -105,7 +104,7 @@ export type DeleteScheduledItemInput = { export type MoveScheduledItemToBottomInput = { externalId: string; - source: ScheduledItemSource; + source: ActivitySource; }; export type CreateScheduleReviewInput = { diff --git a/servers/curated-corpus-api/src/events/curatedCorpusEventEmitter.spec.ts b/servers/curated-corpus-api/src/events/curatedCorpusEventEmitter.spec.ts index e217c700..459aaa16 100644 --- a/servers/curated-corpus-api/src/events/curatedCorpusEventEmitter.spec.ts +++ b/servers/curated-corpus-api/src/events/curatedCorpusEventEmitter.spec.ts @@ -13,7 +13,7 @@ import { ApprovedItemGrade, Topics } from 'content-common'; import { CorpusItemSource, CuratedStatus, - ScheduledItemSource, + ActivitySource, } from 'content-common'; describe('CuratedCorpusEventEmitter', () => { @@ -74,7 +74,7 @@ describe('CuratedCorpusEventEmitter', () => { updatedBy: null, scheduledDate: new Date(), approvedItem: approvedItem, - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }, }; diff --git a/servers/curated-corpus-api/src/events/eventBus/EventBusHandler.spec.ts b/servers/curated-corpus-api/src/events/eventBus/EventBusHandler.spec.ts index e7add12a..635b5fb5 100644 --- a/servers/curated-corpus-api/src/events/eventBus/EventBusHandler.spec.ts +++ b/servers/curated-corpus-api/src/events/eventBus/EventBusHandler.spec.ts @@ -4,7 +4,7 @@ import { CuratedCorpusEventEmitter } from '../curatedCorpusEventEmitter'; import { CorpusItemSource, Topics, - ScheduledItemSource, + ActivitySource, ApprovedItemGrade, } from 'content-common'; import { ScheduledItem } from '../../database/types'; @@ -35,7 +35,7 @@ const scheduledCorpusItem: ScheduledItem = { createdBy: 'Amy', updatedAt: new Date(1648225373000), updatedBy: 'Amy', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, approvedItem: { id: 123, diff --git a/servers/curated-corpus-api/src/events/snowplow/ScheduledItemSnowplowHandler.integration.ts b/servers/curated-corpus-api/src/events/snowplow/ScheduledItemSnowplowHandler.integration.ts index 5970447a..250ea6d3 100644 --- a/servers/curated-corpus-api/src/events/snowplow/ScheduledItemSnowplowHandler.integration.ts +++ b/servers/curated-corpus-api/src/events/snowplow/ScheduledItemSnowplowHandler.integration.ts @@ -22,7 +22,7 @@ import { ActionScreen, ApprovedItemGrade, CorpusItemSource, - ScheduledItemSource, + ActivitySource, Topics, } from 'content-common'; import { getScheduledSurfaceByGuid } from '../../shared/utils'; @@ -42,7 +42,7 @@ const scheduledCorpusItem: ScheduledItem = { createdBy: 'Amy', updatedAt: new Date(), updatedBy: 'Amy', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, approvedItem: { id: 123, @@ -74,7 +74,7 @@ const scheduledCorpusItem: ScheduledItem = { const scheduledEventData: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.MANUAL, + generated_by: ActivitySource.MANUAL, original_scheduled_corpus_item_external_id: 'original-id-123', // in the real world this should match the event type, but it's fine to // hard-code here just to ensure the value is making it to snowplow @@ -101,7 +101,7 @@ const scheduledItemEventContextData = { created_by: scheduledCorpusItem.createdBy, updated_at: getUnixTimestamp(scheduledCorpusItem.updatedAt), updated_by: scheduledCorpusItem.updatedBy, - generated_by: ScheduledItemSource.MANUAL, + generated_by: ActivitySource.MANUAL, status: 'removed', status_reasons: ['TOPIC', 'PUBLISHER'], status_reason_comment: 'why did i rescheudle this? see above', @@ -170,7 +170,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItemWithMlData: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.REMOVED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -199,7 +199,7 @@ describe('ScheduledItemSnowplowHandler', () => { schema: config.snowplow.schemas.scheduledCorpusItem, data: { ...scheduledItemEventContextData, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, }, }, ]); @@ -211,7 +211,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItemWithMlData: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.REMOVED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -244,7 +244,7 @@ describe('ScheduledItemSnowplowHandler', () => { schema: config.snowplow.schemas.scheduledCorpusItem, data: { ...scheduledItemEventContextData, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, action_screen: ActionScreen.SCHEDULE, }, }, @@ -255,7 +255,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItemWithMlData: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.REMOVED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -289,7 +289,7 @@ describe('ScheduledItemSnowplowHandler', () => { schema: config.snowplow.schemas.scheduledCorpusItem, data: { ...scheduledItemEventContextData, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, }, }, ]); @@ -299,7 +299,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItemWithMlData: any = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.REMOVED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -328,7 +328,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItem: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.RESCHEDULED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -362,7 +362,7 @@ describe('ScheduledItemSnowplowHandler', () => { schema: config.snowplow.schemas.scheduledCorpusItem, data: { ...scheduledItemEventContextData, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.RESCHEDULED, action_screen: ActionScreen.SCHEDULE, original_scheduled_corpus_item_external_id: 'original-id-123', @@ -375,7 +375,7 @@ describe('ScheduledItemSnowplowHandler', () => { const scheduledItem: ScheduledCorpusItemPayload = { scheduledCorpusItem: { ...scheduledCorpusItem, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.RESCHEDULED, reasons: ['TOPIC', 'PUBLISHER'], reasonComment: 'why did i rescheudle this? see above', @@ -409,7 +409,7 @@ describe('ScheduledItemSnowplowHandler', () => { schema: config.snowplow.schemas.scheduledCorpusItem, data: { ...scheduledItemEventContextData, - generated_by: ScheduledItemSource.ML, + generated_by: ActivitySource.ML, status: ScheduledCorpusItemStatus.RESCHEDULED, action_screen: ActionScreen.SCHEDULE, }, diff --git a/servers/curated-corpus-api/src/events/snowplow/schema.ts b/servers/curated-corpus-api/src/events/snowplow/schema.ts index 851fd4bc..9002d2cd 100644 --- a/servers/curated-corpus-api/src/events/snowplow/schema.ts +++ b/servers/curated-corpus-api/src/events/snowplow/schema.ts @@ -3,7 +3,7 @@ import { ScheduledCorpusItemStatus } from '../../shared/types'; import { ActionScreen, CorpusItemSource, - ScheduledItemSource, + ActivitySource, } from 'content-common'; export type RejectionReason = { reason: string }; @@ -219,7 +219,7 @@ export type ScheduledCorpusItem = { /** * The method by which this item was generated. Possible values include ML and MANUAL. */ - generated_by?: ScheduledItemSource; + generated_by?: ActivitySource; /** * A guid that identifies the original schedule on which the curator action (removed or rescheduled) took place. */ diff --git a/servers/curated-corpus-api/src/events/types.ts b/servers/curated-corpus-api/src/events/types.ts index 521545fa..5d486152 100644 --- a/servers/curated-corpus-api/src/events/types.ts +++ b/servers/curated-corpus-api/src/events/types.ts @@ -4,7 +4,7 @@ import { } from '.prisma/client'; import { ScheduledItem, CorpusItem, ApprovedItem } from '../database/types'; import { ScheduledCorpusItemStatus } from '../shared/types'; -import { ActionScreen, ScheduledItemSource } from 'content-common'; +import { ActionScreen, ActivitySource } from 'content-common'; export enum ReviewedCorpusItemEventType { ADD_ITEM = 'ADD_ITEM', @@ -56,7 +56,7 @@ export type ReviewedCorpusItemPayload = { export type ScheduledCorpusItemPayload = { scheduledCorpusItem: ScheduledItem & { // the method by which this item was generated (MANUAL or ML, for a scheduled item) - generated_by?: ScheduledItemSource; + generated_by?: ActivitySource; // optional field used when the status of a scheduled item is changed // (either rescheduled or deleted) original_scheduled_corpus_item_external_id?: string; diff --git a/servers/curated-corpus-api/src/test/helpers/createScheduledItemHelper.ts b/servers/curated-corpus-api/src/test/helpers/createScheduledItemHelper.ts index ed765aa5..00d13000 100644 --- a/servers/curated-corpus-api/src/test/helpers/createScheduledItemHelper.ts +++ b/servers/curated-corpus-api/src/test/helpers/createScheduledItemHelper.ts @@ -5,7 +5,7 @@ import { PrismaClient, } from '.prisma/client'; import { faker } from '@faker-js/faker'; -import { ScheduledItemSource } from 'content-common'; +import { ActivitySource } from 'content-common'; // the data required to create a scheduled item that goes onto a scheduled surface interface CreateScheduledItemHelperRequiredInput { @@ -17,7 +17,7 @@ interface CreateScheduledItemHelperOptionalInput { createdBy: string; scheduledSurfaceGuid: string; scheduledDate: string; - source: ScheduledItemSource; + source: ActivitySource; } // the input type the helper function expects - a combo of required and optional parameters @@ -44,7 +44,7 @@ export async function createScheduledItemHelper( faker.date.recent({ days: 7 }).toISOString(), ]), scheduledSurfaceGuid: 'NEW_TAB_EN_US', - source: ScheduledItemSource.MANUAL, + source: ActivitySource.MANUAL, }; const inputs: Prisma.ScheduledItemCreateInput = { From 8fd40bbc3572254e5830e5e8f3bc39971db2d3e1 Mon Sep 17 00:00:00 2001 From: Katerina Chinnappan Date: Mon, 3 Feb 2025 14:33:33 -0800 Subject: [PATCH 2/3] fix --- lambdas/corpus-scheduler-lambda/src/testHelpers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lambdas/corpus-scheduler-lambda/src/testHelpers.ts b/lambdas/corpus-scheduler-lambda/src/testHelpers.ts index b9e47da2..f5f2fcdc 100644 --- a/lambdas/corpus-scheduler-lambda/src/testHelpers.ts +++ b/lambdas/corpus-scheduler-lambda/src/testHelpers.ts @@ -9,7 +9,7 @@ import { CorpusLanguage, CreateApprovedCorpusItemApiInput, CuratedStatus, - ScheduledItemSource, + ActivitySource, ScheduledSurfacesEnum, Topics, UrlMetadata, @@ -150,7 +150,7 @@ export const getCreateApprovedCorpusItemApiOutput = ( imageUrl: 'https://fake-image-url.com', topic: Topics.SELF_IMPROVEMENT, source: CorpusItemSource.ML, - scheduledSource: ScheduledItemSource.ML, + scheduledSource: ActivitySource.ML, isCollection: false, isSyndicated: false, isTimeSensitive: false, From 1625ae58fd52f35b4b47f837f402ce7c41155319 Mon Sep 17 00:00:00 2001 From: Katerina Chinnappan Date: Tue, 4 Feb 2025 16:06:44 -0800 Subject: [PATCH 3/3] update --- servers/curated-corpus-api/src/database/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/servers/curated-corpus-api/src/database/types.ts b/servers/curated-corpus-api/src/database/types.ts index fd46001c..eeeebadb 100644 --- a/servers/curated-corpus-api/src/database/types.ts +++ b/servers/curated-corpus-api/src/database/types.ts @@ -69,6 +69,7 @@ export type RejectApprovedItemInput = { reason: string; }; + export type CreateRejectedItemInput = { prospectId?: string; url: string;