From 2917e3104ef3b2417e2a89103e8ecbfa2a047be0 Mon Sep 17 00:00:00 2001 From: Pavel Brui Date: Fri, 19 Apr 2024 13:55:55 +0200 Subject: [PATCH] updatePaginationForSelfServices --- .../integrations/gei-bookings/package.json | 2 +- .../integrations/gei-bookings/schema.graphql | 4 +++ .../src/UserQuery/getSelfServices.ts | 19 +++++++---- .../gei-bookings/src/zeus/const.ts | 12 ++++--- .../gei-bookings/src/zeus/index.ts | 32 ++++++++++++++----- 5 files changed, 49 insertions(+), 20 deletions(-) diff --git a/packages/integrations/gei-bookings/package.json b/packages/integrations/gei-bookings/package.json index 041a7e5..2f9dd31 100644 --- a/packages/integrations/gei-bookings/package.json +++ b/packages/integrations/gei-bookings/package.json @@ -1,6 +1,6 @@ { "name": "gei-bookings", - "version": "0.2.7", + "version": "0.2.8", "description": "Automatically generated by graphql-editor-cli", "main": "lib/index.js", "scripts": { diff --git a/packages/integrations/gei-bookings/schema.graphql b/packages/integrations/gei-bookings/schema.graphql index 0fbe82c..fe2cbbd 100644 --- a/packages/integrations/gei-bookings/schema.graphql +++ b/packages/integrations/gei-bookings/schema.graphql @@ -120,6 +120,7 @@ input GetBookingsForServiceFiltersInput{ type GetBookingsForServiceRespond{ books: [BookingRecord!] error: GlobalError + hasNextPage: Boolean } input RespondOnServiceRequestInput{ @@ -151,6 +152,7 @@ input GetSelfServicesFiltersInput{ type GetSelfServicesRespond{ service: [Service!] error: GlobalError + hasNextPage: Boolean } type RespondOnServiceRequestRespond{ @@ -177,11 +179,13 @@ input ListServicesInput{ type GetBooksRepsond{ books: [BookingRecord!] error: GlobalError + hasNextPage: Boolean } type ListServicesRespond{ services: [Service!] error: GlobalError + hasNextPage: Boolean } type GetServiceRespond{ diff --git a/packages/integrations/gei-bookings/src/UserQuery/getSelfServices.ts b/packages/integrations/gei-bookings/src/UserQuery/getSelfServices.ts index 1799842..8684adc 100644 --- a/packages/integrations/gei-bookings/src/UserQuery/getSelfServices.ts +++ b/packages/integrations/gei-bookings/src/UserQuery/getSelfServices.ts @@ -3,7 +3,6 @@ import { resolverFor } from '../zeus/index.js'; import { convertDateObjToStringForArray, errMiddleware, sourceContainUserIdOrThrow } from '../utils/middleware.js'; import { MongoOrb, inputServiceFiltersSet, preparePageOptions } from '../utils/db/orm.js'; import { ServicesCollection } from '../utils/db/collections.js'; -import { isScalarDate } from '../PublicQuery/listServices.js'; import { ServiceModel } from '../models/ServiceModel.js'; import { WithId } from 'mongodb'; @@ -15,16 +14,22 @@ export const getSelfServices = async (input: FieldResolveInput) => const inputFilters = inputServiceFiltersSet(args?.input?.filters) - const selfServices = await MongoOrb(ServicesCollection) + const servicesCursor = MongoOrb(ServicesCollection) .collection.find({ ...inputFilters, ownerId: src.userId || src._id, }) - .limit(po.limit) - .skip(po.skip) - .sort('createdAt', -1) - .toArray(); - return { service: convertDateObjToStringForArray>(selfServices) } + const paginatedServices = await (po.limit < 1 ? + servicesCursor + : servicesCursor.limit(po.limit + 1).skip(po.skip) + ).sort('createdAt', -1).toArray() + const hasNext = paginatedServices.length === po.limit + 1 + if(hasNext) paginatedServices.pop(); + + return { + services: convertDateObjToStringForArray>(paginatedServices), + hasNextPage: hasNext + }; }), )(input.arguments, input.source); export default getSelfServices; diff --git a/packages/integrations/gei-bookings/src/zeus/const.ts b/packages/integrations/gei-bookings/src/zeus/const.ts index ffa65f5..b151041 100644 --- a/packages/integrations/gei-bookings/src/zeus/const.ts +++ b/packages/integrations/gei-bookings/src/zeus/const.ts @@ -154,11 +154,13 @@ export const ReturnTypes: Record = { }, GetBookingsForServiceRespond:{ books:"BookingRecord", - error:"GlobalError" + error:"GlobalError", + hasNextPage:"Boolean" }, GetSelfServicesRespond:{ service:"Service", - error:"GlobalError" + error:"GlobalError", + hasNextPage:"Boolean" }, RespondOnServiceRequestRespond:{ status:"Boolean", @@ -166,11 +168,13 @@ export const ReturnTypes: Record = { }, GetBooksRepsond:{ books:"BookingRecord", - error:"GlobalError" + error:"GlobalError", + hasNextPage:"Boolean" }, ListServicesRespond:{ services:"Service", - error:"GlobalError" + error:"GlobalError", + hasNextPage:"Boolean" }, GetServiceRespond:{ service:"Service", diff --git a/packages/integrations/gei-bookings/src/zeus/index.ts b/packages/integrations/gei-bookings/src/zeus/index.ts index 78d0478..09f2f57 100644 --- a/packages/integrations/gei-bookings/src/zeus/index.ts +++ b/packages/integrations/gei-bookings/src/zeus/index.ts @@ -911,6 +911,7 @@ respondOnServiceRequest?: [{ input: ValueTypes["RespondOnServiceRequestInput"] | ["GetBookingsForServiceRespond"]: AliasType<{ books?:ValueTypes["BookingRecord"], error?:ValueTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["RespondOnServiceRequestInput"]: { @@ -933,6 +934,7 @@ respondOnServiceRequest?: [{ input: ValueTypes["RespondOnServiceRequestInput"] | ["GetSelfServicesRespond"]: AliasType<{ service?:ValueTypes["Service"], error?:ValueTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["RespondOnServiceRequestRespond"]: AliasType<{ @@ -956,11 +958,13 @@ respondOnServiceRequest?: [{ input: ValueTypes["RespondOnServiceRequestInput"] | ["GetBooksRepsond"]: AliasType<{ books?:ValueTypes["BookingRecord"], error?:ValueTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["ListServicesRespond"]: AliasType<{ services?:ValueTypes["Service"], error?:ValueTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["GetServiceRespond"]: AliasType<{ @@ -1202,6 +1206,7 @@ respondOnServiceRequest?: [{ input: ResolverInputTypes["RespondOnServiceRequestI ["GetBookingsForServiceRespond"]: AliasType<{ books?:ResolverInputTypes["BookingRecord"], error?:ResolverInputTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["RespondOnServiceRequestInput"]: { @@ -1224,6 +1229,7 @@ respondOnServiceRequest?: [{ input: ResolverInputTypes["RespondOnServiceRequestI ["GetSelfServicesRespond"]: AliasType<{ service?:ResolverInputTypes["Service"], error?:ResolverInputTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["RespondOnServiceRequestRespond"]: AliasType<{ @@ -1247,11 +1253,13 @@ respondOnServiceRequest?: [{ input: ResolverInputTypes["RespondOnServiceRequestI ["GetBooksRepsond"]: AliasType<{ books?:ResolverInputTypes["BookingRecord"], error?:ResolverInputTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["ListServicesRespond"]: AliasType<{ services?:ResolverInputTypes["Service"], error?:ResolverInputTypes["GlobalError"], + hasNextPage?:boolean | `@${string}`, __typename?: boolean | `@${string}` }>; ["GetServiceRespond"]: AliasType<{ @@ -1495,7 +1503,8 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc }; ["GetBookingsForServiceRespond"]: { books?: Array | undefined, - error?: ModelTypes["GlobalError"] | undefined + error?: ModelTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["RespondOnServiceRequestInput"]: { bookIds: Array, @@ -1516,7 +1525,8 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc }; ["GetSelfServicesRespond"]: { service?: Array | undefined, - error?: ModelTypes["GlobalError"] | undefined + error?: ModelTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["RespondOnServiceRequestRespond"]: { status: boolean, @@ -1537,11 +1547,13 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc }; ["GetBooksRepsond"]: { books?: Array | undefined, - error?: ModelTypes["GlobalError"] | undefined + error?: ModelTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["ListServicesRespond"]: { services?: Array | undefined, - error?: ModelTypes["GlobalError"] | undefined + error?: ModelTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["GetServiceRespond"]: { service?: ModelTypes["Service"] | undefined, @@ -1771,7 +1783,8 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc ["GetBookingsForServiceRespond"]: { __typename: "GetBookingsForServiceRespond", books?: Array | undefined, - error?: GraphQLTypes["GlobalError"] | undefined + error?: GraphQLTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["RespondOnServiceRequestInput"]: { bookIds: Array, @@ -1793,7 +1806,8 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc ["GetSelfServicesRespond"]: { __typename: "GetSelfServicesRespond", service?: Array | undefined, - error?: GraphQLTypes["GlobalError"] | undefined + error?: GraphQLTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["RespondOnServiceRequestRespond"]: { __typename: "RespondOnServiceRequestRespond", @@ -1816,12 +1830,14 @@ in otherwise any endpoint in UserMutation will throw error about malformed sourc ["GetBooksRepsond"]: { __typename: "GetBooksRepsond", books?: Array | undefined, - error?: GraphQLTypes["GlobalError"] | undefined + error?: GraphQLTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["ListServicesRespond"]: { __typename: "ListServicesRespond", services?: Array | undefined, - error?: GraphQLTypes["GlobalError"] | undefined + error?: GraphQLTypes["GlobalError"] | undefined, + hasNextPage?: boolean | undefined }; ["GetServiceRespond"]: { __typename: "GetServiceRespond",