mirror of
https://github.com/supabase/supabase.git
synced 2026-05-07 01:10:15 -04:00
4e916fc16a
* feat(graphql): add paginated errors collection query - Add new GraphQL query field 'errors' with cursor-based pagination - Add UUID id column to content.error table for cursor pagination - Implement error collection resolver with forward/backward pagination - Add comprehensive test suite for pagination functionality - Update database types and schema to support new error collection - Add utility functions for handling collection queries and errors - Add seed data for testing pagination scenarios This change allows clients to efficiently paginate through error codes using cursor-based pagination, supporting both forward and backward traversal. The implementation follows the Relay connection specification and includes proper error handling and type safety. * docs(graphql): add comprehensive GraphQL architecture documentation Add detailed documentation for the docs GraphQL endpoint architecture, including: - Modular query pattern and folder structure - Step-by-step guide for creating new top-level queries - Best practices for error handling, field optimization, and testing - Code examples for schemas, models, resolvers, and tests * feat(graphql): add service filtering to errors collection query Enable filtering error codes by Supabase service in the GraphQL errors collection: - Add optional service argument to errors query resolver - Update error model to support service-based filtering in database queries - Maintain pagination compatibility with service filtering - Add comprehensive tests for service filtering with and without pagination * feat(graphql): add service filtering and fix cursor encoding for errors collection - Add service parameter to errors GraphQL query for filtering by Supabase service - Implement base64 encoding/decoding for pagination cursors in error resolver - Fix test cursor encoding to match resolver implementation - Update GraphQL schema snapshot to reflect new service filter field * docs(graphql): fix codegen instruction
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import {
|
|
GraphQLEnumType,
|
|
GraphQLInt,
|
|
GraphQLNonNull,
|
|
GraphQLObjectType,
|
|
GraphQLString,
|
|
} from 'graphql'
|
|
import { SERVICES } from './errorModel'
|
|
|
|
export const GRAPHQL_FIELD_ERROR_GLOBAL = 'error' as const
|
|
export const GRAPHQL_FIELD_ERRORS_GLOBAL = 'errors' as const
|
|
|
|
export const GraphQLEnumTypeService = new GraphQLEnumType({
|
|
name: 'Service',
|
|
values: SERVICES,
|
|
})
|
|
|
|
export const GraphQLObjectTypeError = new GraphQLObjectType({
|
|
name: 'Error',
|
|
description: 'An error returned by a Supabase service',
|
|
fields: {
|
|
code: {
|
|
type: new GraphQLNonNull(GraphQLString),
|
|
description:
|
|
'The unique code identifying the error. The code is stable, and can be used for string matching during error handling.',
|
|
},
|
|
service: {
|
|
type: new GraphQLNonNull(GraphQLEnumTypeService),
|
|
description: 'The Supabase service that returns this error.',
|
|
},
|
|
httpStatusCode: {
|
|
type: GraphQLInt,
|
|
description: 'The HTTP status code returned with this error.',
|
|
},
|
|
message: {
|
|
type: GraphQLString,
|
|
description:
|
|
'A human-readable message describing the error. The message is not stable, and should not be used for string matching during error handling. Use the code instead.',
|
|
},
|
|
},
|
|
})
|