forked from Quramy/graphql-decorator
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathmetadata-args.storage.ts
More file actions
36 lines (29 loc) · 1006 Bytes
/
metadata-args.storage.ts
File metadata and controls
36 lines (29 loc) · 1006 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import {
EnumTypeArg,
EnumValueArg,
UnionTypeArgs,
} from '../metadata/args';
/**
* Gets metadata args storage.
* Metadata args storage follows the best practices and stores metadata in a global variable.
*/
export function getMetadataArgsStorage(): MetadataArgsStorage {
if (!(global as any).graphqlSchemaMetadataArgsStorage) {
(global as any).graphqlSchemaMetadataArgsStorage = new MetadataArgsStorage();
}
return (global as any).graphqlSchemaMetadataArgsStorage;
}
export class MetadataArgsStorage {
enums: EnumTypeArg[] = [];
enumValues: EnumValueArg[] = [];
union: UnionTypeArgs[] = [];
filterEnumsByClass(target: any): EnumTypeArg[] {
return this.enums.filter(item => item.target === target);
}
filterEnumValuesByClass(target: any): EnumValueArg[] {
return this.enumValues.filter(item => item.target === target.prototype);
}
filterUnionTypeByClass(target: any): UnionTypeArgs[] {
return this.union.filter(item => item.target === target);
}
}