Fix limit pagination (#2692)

* Fix limit parameter

* Increaze max_row for each workspaces
This commit is contained in:
martmull
2023-11-24 17:02:41 +01:00
committed by GitHub
parent d3615ba0d3
commit cefac8435b
4 changed files with 55 additions and 21 deletions

View File

@ -25,6 +25,7 @@ import { ViewType } from '@/views/types/ViewType';
import { mapViewFieldsToBoardFieldDefinitions } from '@/views/utils/mapViewFieldsToBoardFieldDefinitions'; import { mapViewFieldsToBoardFieldDefinitions } from '@/views/utils/mapViewFieldsToBoardFieldDefinitions';
import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters'; import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters';
import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts'; import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts';
import { isDefined } from '~/utils/isDefined';
import { useUpdateCompanyBoardCardIds } from '../hooks/useUpdateBoardCardIds'; import { useUpdateCompanyBoardCardIds } from '../hooks/useUpdateBoardCardIds';
import { useUpdateCompanyBoard } from '../hooks/useUpdateCompanyBoardColumns'; import { useUpdateCompanyBoard } from '../hooks/useUpdateCompanyBoardColumns';
@ -98,27 +99,34 @@ export const HooksCompanyBoardEffect = () => {
objectMetadataItem?.fields ?? [], objectMetadataItem?.fields ?? [],
); );
useFindManyObjectRecords({ const { fetchMoreObjects: fetchMoreOpportunities } = useFindManyObjectRecords(
skip: !pipelineSteps.length, {
objectNamePlural: 'opportunities', skip: !pipelineSteps.length,
filter: filter, objectNamePlural: 'opportunities',
orderBy: orderBy, filter: filter,
onCompleted: useCallback( orderBy: orderBy,
(data: PaginatedObjectTypeResults<Opportunity>) => { onCompleted: useCallback(
const pipelineProgresses: Array<Opportunity> = data.edges.map( (data: PaginatedObjectTypeResults<Opportunity>) => {
(edge) => edge.node, const pipelineProgresses: Array<Opportunity> = data.edges.map(
); (edge) => edge.node,
);
updateCompanyBoardCardIds(pipelineProgresses); updateCompanyBoardCardIds(pipelineProgresses);
setOpportunities(pipelineProgresses); setOpportunities(pipelineProgresses);
setIsBoardLoaded(true); setIsBoardLoaded(true);
}, },
[setIsBoardLoaded, updateCompanyBoardCardIds], [setIsBoardLoaded, updateCompanyBoardCardIds],
), ),
}); },
);
useEffect(() => {
if (isDefined(fetchMoreOpportunities)) {
fetchMoreOpportunities();
}
}, [fetchMoreOpportunities]);
useFindManyObjectRecords({ const { fetchMoreObjects: fetchMoreCompanies } = useFindManyObjectRecords({
skip: !opportunities.length, skip: !opportunities.length,
objectNamePlural: 'companies', objectNamePlural: 'companies',
filter: { filter: {
@ -131,6 +139,12 @@ export const HooksCompanyBoardEffect = () => {
}, []), }, []),
}); });
useEffect(() => {
if (isDefined(fetchMoreCompanies)) {
fetchMoreCompanies();
}
}, [fetchMoreCompanies]);
useEffect(() => { useEffect(() => {
if (!objectMetadataItem) { if (!objectMetadataItem) {
return; return;

View File

@ -8,6 +8,7 @@ import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimis
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier'; import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
import { getRecordOptimisticEffectDefinition } from '@/object-record/graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition'; import { getRecordOptimisticEffectDefinition } from '@/object-record/graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition';
import { DEFAULT_SEARCH_REQUEST_LIMIT } from '@/search/hooks/useFilteredSearchEntityQuery';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar'; import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { logError } from '~/utils/logError'; import { logError } from '~/utils/logError';
import { capitalize } from '~/utils/string/capitalize'; import { capitalize } from '~/utils/string/capitalize';
@ -30,7 +31,7 @@ export const useFindManyObjectRecords = <
objectNamePlural, objectNamePlural,
filter, filter,
orderBy, orderBy,
limit, limit = DEFAULT_SEARCH_REQUEST_LIMIT,
onCompleted, onCompleted,
skip, skip,
}: Pick<ObjectMetadataItemIdentifier, 'objectNamePlural'> & { }: Pick<ObjectMetadataItemIdentifier, 'objectNamePlural'> & {
@ -72,8 +73,8 @@ export const useFindManyObjectRecords = <
skip: skip || !objectMetadataItem || !objectNamePlural, skip: skip || !objectMetadataItem || !objectNamePlural,
variables: { variables: {
filter: filter ?? {}, filter: filter ?? {},
limit: limit,
orderBy: orderBy ?? {}, orderBy: orderBy ?? {},
limit: limit ?? 30,
}, },
onCompleted: (data) => { onCompleted: (data) => {
if (objectMetadataItem) { if (objectMetadataItem) {

View File

@ -15,7 +15,7 @@ export type OrderBy =
| 'AscNullsFirst' | 'AscNullsFirst'
| 'DescNullsFirst'; | 'DescNullsFirst';
const DEFAULT_SEARCH_REQUEST_LIMIT = 30; export const DEFAULT_SEARCH_REQUEST_LIMIT = 60;
// TODO: use this for all search queries, because we need selectedEntities and entitiesToSelect each time we want to search // TODO: use this for all search queries, because we need selectedEntities and entitiesToSelect each time we want to search
// Filtered entities to select are // Filtered entities to select are

View File

@ -50,6 +50,8 @@ export class WorkspaceManagerService {
schemaName, schemaName,
); );
await this.setWorkspaceMaxRow(workspaceId, schemaName);
await this.workspaceMigrationService.insertStandardMigrations(workspaceId); await this.workspaceMigrationService.insertStandardMigrations(workspaceId);
await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations( await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations(
@ -217,6 +219,23 @@ export class WorkspaceManagerService {
); );
} }
/**
*
* We are updating the pg_graphql max_rows from 30 (default value) to 60
*
* @params workspaceId, schemaName
* @param workspaceId
*/
private async setWorkspaceMaxRow(workspaceId, schemaName) {
const workspaceDataSource =
await this.workspaceDataSourceService.connectToWorkspaceDataSource(
workspaceId,
);
await workspaceDataSource.query(
`comment on schema ${schemaName} is e'@graphql({"max_rows": 60})'`,
);
}
/** /**
* *
* We are prefilling a few standard objects with data to make it easier for the user to get started. * We are prefilling a few standard objects with data to make it easier for the user to get started.