directus
1import type { Type } from '@directus/types';
2import type { GraphQLType } from 'graphql';
3import { GraphQLBoolean, GraphQLFloat, GraphQLInt, GraphQLList, GraphQLScalarType, GraphQLString } from 'graphql';
4import { GraphQLJSON } from 'graphql-compose';
5import { GraphQLBigInt } from '../services/graphql/types/bigint.js';
6import { GraphQLDate } from '../services/graphql/types/date.js';
7import { GraphQLGeoJSON } from '../services/graphql/types/geojson.js';
8import { GraphQLHash } from '../services/graphql/types/hash.js';
9
10export function getGraphQLType(
11localType: Type | 'alias' | 'unknown',
12special: string[],
13): GraphQLScalarType | GraphQLList<GraphQLType> {
14if (special.includes('conceal')) {
15return GraphQLHash;
16}
17
18switch (localType) {
19case 'boolean':
20return GraphQLBoolean;
21case 'bigInteger':
22return GraphQLBigInt;
23case 'integer':
24return GraphQLInt;
25case 'decimal':
26case 'float':
27return GraphQLFloat;
28case 'csv':
29return new GraphQLList(GraphQLString);
30case 'json':
31return GraphQLJSON;
32case 'geometry':
33return GraphQLGeoJSON;
34case 'time':
35case 'timestamp':
36case 'dateTime':
37case 'date':
38return GraphQLDate;
39case 'hash':
40return GraphQLHash;
41default:
42return GraphQLString;
43}
44}
45