082400f751
## Summary - Adds an `objectRecordCounts` query on the `/metadata` GraphQL endpoint that returns approximate record counts for all objects in the workspace - Uses PostgreSQL's `pg_class.reltuples` catalog stats — a single instant query instead of N `COUNT(*)` table scans - Replaces the previous `CombinedFindManyRecords` approach which hit the server's 20 root resolver limit and silently showed 0 for all counts on the settings Data Model page ### Server - `ObjectRecordCountDTO` — GraphQL type with `objectNamePlural` and `totalCount` - `ObjectRecordCountService` — reads `pg_class` catalog for the workspace schema - Query added to `ObjectMetadataResolver` with `@MetadataResolver()` + `NoPermissionGuard` ### Frontend - `OBJECT_RECORD_COUNTS` query added to `object-metadata/graphql/queries.ts` - `useCombinedGetTotalCount` simplified to a zero-argument hook using the new query - `SettingsObjectTable` simplified to a single hook call --------- Co-authored-by: Cursor <cursoragent@cursor.com>
31 lines
619 B
TypeScript
31 lines
619 B
TypeScript
import { gql } from '@apollo/client';
|
|
import { OBJECT_METADATA_FRAGMENT } from '@/object-metadata/graphql/fragment';
|
|
|
|
export const FIND_MANY_OBJECT_METADATA_ITEMS = gql`
|
|
${OBJECT_METADATA_FRAGMENT}
|
|
query ObjectMetadataItems {
|
|
objects(paging: { first: 1000 }) {
|
|
edges {
|
|
node {
|
|
...ObjectMetadataFields
|
|
}
|
|
}
|
|
pageInfo {
|
|
hasNextPage
|
|
hasPreviousPage
|
|
startCursor
|
|
endCursor
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
export const OBJECT_RECORD_COUNTS = gql`
|
|
query ObjectRecordCounts {
|
|
objectRecordCounts {
|
|
objectNamePlural
|
|
totalCount
|
|
}
|
|
}
|
|
`;
|