From b976b6098d8d09b9f8b61e4d4c0eeecea525dfeb Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 29 Jul 2022 12:11:48 +0800 Subject: [PATCH] Add updatesSince API in GQL schema --- packages/api/src/generated/graphql.ts | 77 +++++++++++++++++++++++ packages/api/src/generated/schema.graphql | 29 +++++++++ packages/api/src/schema.ts | 29 +++++++++ 3 files changed, 135 insertions(+) diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index 2310ca181..c9fc8f810 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -1264,6 +1264,7 @@ export type Query = { sharedArticle: SharedArticleResult; subscriptions: SubscriptionsResult; typeaheadSearch: TypeaheadSearchResult; + updatesSince: UpdatesSinceResult; user: UserResult; users: UsersResult; validateUsername: Scalars['Boolean']; @@ -1341,6 +1342,13 @@ export type QueryTypeaheadSearchArgs = { }; +export type QueryUpdatesSinceArgs = { + after?: InputMaybe; + first?: InputMaybe; + since: Scalars['Date']; +}; + + export type QueryUserArgs = { userId?: InputMaybe; username?: InputMaybe; @@ -1892,6 +1900,14 @@ export type SubscriptionsSuccess = { subscriptions: Array; }; +export type SyncUpdatedItemEdge = { + __typename?: 'SyncUpdatedItemEdge'; + cursor: Scalars['String']; + itemID: Scalars['ID']; + node?: Maybe; + updateReason: UpdateReason; +}; + export type TypeaheadSearchError = { __typename?: 'TypeaheadSearchError'; errorCodes: Array; @@ -2059,6 +2075,12 @@ export type UpdatePageSuccess = { updatedPage: Article; }; +export enum UpdateReason { + Created = 'CREATED', + Deleted = 'DELETED', + Updated = 'UPDATED' +} + export type UpdateReminderError = { __typename?: 'UpdateReminderError'; errorCodes: Array; @@ -2158,6 +2180,23 @@ export type UpdateUserSuccess = { user: User; }; +export type UpdatesSinceError = { + __typename?: 'UpdatesSinceError'; + errorCodes?: Maybe>; +}; + +export enum UpdatesSinceErrorCode { + Unauthorized = 'UNAUTHORIZED' +} + +export type UpdatesSinceResult = UpdatesSinceError | UpdatesSinceSuccess; + +export type UpdatesSinceSuccess = { + __typename?: 'UpdatesSinceSuccess'; + edges: Array; + pageInfo: PageInfo; +}; + export type UploadFileRequestError = { __typename?: 'UploadFileRequestError'; errorCodes: Array; @@ -2653,6 +2692,7 @@ export type ResolversTypes = { SubscriptionsErrorCode: SubscriptionsErrorCode; SubscriptionsResult: ResolversTypes['SubscriptionsError'] | ResolversTypes['SubscriptionsSuccess']; SubscriptionsSuccess: ResolverTypeWrapper; + SyncUpdatedItemEdge: ResolverTypeWrapper; TypeaheadSearchError: ResolverTypeWrapper; TypeaheadSearchErrorCode: TypeaheadSearchErrorCode; TypeaheadSearchItem: ResolverTypeWrapper; @@ -2687,6 +2727,7 @@ export type ResolversTypes = { UpdatePageInput: UpdatePageInput; UpdatePageResult: ResolversTypes['UpdatePageError'] | ResolversTypes['UpdatePageSuccess']; UpdatePageSuccess: ResolverTypeWrapper; + UpdateReason: UpdateReason; UpdateReminderError: ResolverTypeWrapper; UpdateReminderErrorCode: UpdateReminderErrorCode; UpdateReminderInput: UpdateReminderInput; @@ -2707,6 +2748,10 @@ export type ResolversTypes = { UpdateUserProfileSuccess: ResolverTypeWrapper; UpdateUserResult: ResolversTypes['UpdateUserError'] | ResolversTypes['UpdateUserSuccess']; UpdateUserSuccess: ResolverTypeWrapper; + UpdatesSinceError: ResolverTypeWrapper; + UpdatesSinceErrorCode: UpdatesSinceErrorCode; + UpdatesSinceResult: ResolversTypes['UpdatesSinceError'] | ResolversTypes['UpdatesSinceSuccess']; + UpdatesSinceSuccess: ResolverTypeWrapper; UploadFileRequestError: ResolverTypeWrapper; UploadFileRequestErrorCode: UploadFileRequestErrorCode; UploadFileRequestInput: UploadFileRequestInput; @@ -2950,6 +2995,7 @@ export type ResolversParentTypes = { SubscriptionsError: SubscriptionsError; SubscriptionsResult: ResolversParentTypes['SubscriptionsError'] | ResolversParentTypes['SubscriptionsSuccess']; SubscriptionsSuccess: SubscriptionsSuccess; + SyncUpdatedItemEdge: SyncUpdatedItemEdge; TypeaheadSearchError: TypeaheadSearchError; TypeaheadSearchItem: TypeaheadSearchItem; TypeaheadSearchResult: ResolversParentTypes['TypeaheadSearchError'] | ResolversParentTypes['TypeaheadSearchSuccess']; @@ -2993,6 +3039,9 @@ export type ResolversParentTypes = { UpdateUserProfileSuccess: UpdateUserProfileSuccess; UpdateUserResult: ResolversParentTypes['UpdateUserError'] | ResolversParentTypes['UpdateUserSuccess']; UpdateUserSuccess: UpdateUserSuccess; + UpdatesSinceError: UpdatesSinceError; + UpdatesSinceResult: ResolversParentTypes['UpdatesSinceError'] | ResolversParentTypes['UpdatesSinceSuccess']; + UpdatesSinceSuccess: UpdatesSinceSuccess; UploadFileRequestError: UploadFileRequestError; UploadFileRequestInput: UploadFileRequestInput; UploadFileRequestResult: ResolversParentTypes['UploadFileRequestError'] | ResolversParentTypes['UploadFileRequestSuccess']; @@ -3774,6 +3823,7 @@ export type QueryResolvers>; subscriptions?: Resolver>; typeaheadSearch?: Resolver>; + updatesSince?: Resolver>; user?: Resolver>; users?: Resolver; validateUsername?: Resolver>; @@ -4116,6 +4166,14 @@ export type SubscriptionsSuccessResolvers; }; +export type SyncUpdatedItemEdgeResolvers = { + cursor?: Resolver; + itemID?: Resolver; + node?: Resolver, ParentType, ContextType>; + updateReason?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type TypeaheadSearchErrorResolvers = { errorCodes?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -4279,6 +4337,21 @@ export type UpdateUserSuccessResolvers; }; +export type UpdatesSinceErrorResolvers = { + errorCodes?: Resolver>, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}; + +export type UpdatesSinceResultResolvers = { + __resolveType: TypeResolveFn<'UpdatesSinceError' | 'UpdatesSinceSuccess', ParentType, ContextType>; +}; + +export type UpdatesSinceSuccessResolvers = { + edges?: Resolver, ParentType, ContextType>; + pageInfo?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}; + export type UploadFileRequestErrorResolvers = { errorCodes?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -4571,6 +4644,7 @@ export type Resolvers = { SubscriptionsError?: SubscriptionsErrorResolvers; SubscriptionsResult?: SubscriptionsResultResolvers; SubscriptionsSuccess?: SubscriptionsSuccessResolvers; + SyncUpdatedItemEdge?: SyncUpdatedItemEdgeResolvers; TypeaheadSearchError?: TypeaheadSearchErrorResolvers; TypeaheadSearchItem?: TypeaheadSearchItemResolvers; TypeaheadSearchResult?: TypeaheadSearchResultResolvers; @@ -4605,6 +4679,9 @@ export type Resolvers = { UpdateUserProfileSuccess?: UpdateUserProfileSuccessResolvers; UpdateUserResult?: UpdateUserResultResolvers; UpdateUserSuccess?: UpdateUserSuccessResolvers; + UpdatesSinceError?: UpdatesSinceErrorResolvers; + UpdatesSinceResult?: UpdatesSinceResultResolvers; + UpdatesSinceSuccess?: UpdatesSinceSuccessResolvers; UploadFileRequestError?: UploadFileRequestErrorResolvers; UploadFileRequestResult?: UploadFileRequestResultResolvers; UploadFileRequestSuccess?: UploadFileRequestSuccessResolvers; diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index d3170ed12..133c0e135 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -918,6 +918,7 @@ type Query { sharedArticle(selectedHighlightId: String, slug: String!, username: String!): SharedArticleResult! subscriptions(sort: SortParams): SubscriptionsResult! typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult! + updatesSince(after: String, first: Int, since: Date!): UpdatesSinceResult! user(userId: ID, username: String): UserResult! users: UsersResult! validateUsername(username: String!): Boolean! @@ -1419,6 +1420,13 @@ type SubscriptionsSuccess { subscriptions: [Subscription!]! } +type SyncUpdatedItemEdge { + cursor: String! + itemID: ID! + node: SearchItem + updateReason: UpdateReason! +} + type TypeaheadSearchError { errorCodes: [TypeaheadSearchErrorCode!]! } @@ -1571,6 +1579,12 @@ type UpdatePageSuccess { updatedPage: Article! } +enum UpdateReason { + CREATED + DELETED + UPDATED +} + type UpdateReminderError { errorCodes: [UpdateReminderErrorCode!]! } @@ -1662,6 +1676,21 @@ type UpdateUserSuccess { user: User! } +type UpdatesSinceError { + errorCodes: [UpdatesSinceErrorCode!] +} + +enum UpdatesSinceErrorCode { + UNAUTHORIZED +} + +union UpdatesSinceResult = UpdatesSinceError | UpdatesSinceSuccess + +type UpdatesSinceSuccess { + edges: [SyncUpdatedItemEdge!]! + pageInfo: PageInfo! +} + type UploadFileRequestError { errorCodes: [UploadFileRequestErrorCode!]! } diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 336056564..7a2b6457d 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -1761,6 +1761,34 @@ const schema = gql` siteName: String } + union UpdatesSinceResult = UpdatesSinceSuccess | UpdatesSinceError + + type UpdatesSinceSuccess { + edges: [SyncUpdatedItemEdge!]! + pageInfo: PageInfo! + } + + type SyncUpdatedItemEdge { + cursor: String! + updateReason: UpdateReason! + itemID: ID! + node: SearchItem # for created or updated items, null for deletions */ + } + + enum UpdateReason { + CREATED + UPDATED + DELETED + } + + type UpdatesSinceError { + errorCodes: [UpdatesSinceErrorCode!] + } + + enum UpdatesSinceErrorCode { + UNAUTHORIZED + } + # Mutations type Mutation { googleLogin(input: GoogleLoginInput!): LoginResult! @@ -1873,6 +1901,7 @@ const schema = gql` webhook(id: ID!): WebhookResult! apiKeys: ApiKeysResult! typeaheadSearch(query: String!, first: Int): TypeaheadSearchResult! + updatesSince(after: String, first: Int, since: Date!): UpdatesSinceResult! } `