# Graphql Directive {{tag>graphql directive deprecated skip include upppercase}} ## deprecated ### code @strawberry.type class DirectiveQuery: @strawberry.field( description="directive example", deprecation_reason="deprecated use other field" ) def directive_deprecated(self, info) -> str: return "result of directive_deprecated" ### query { directiveDeprecated } ### result { "data": { "directiveDeprecated": "result of directive_deprecated" } } {{ https://i.imgur.com/AYXJv5A.jpg?500 }} ## skip & include ### code @strawberry.type class DirectiveQuery: @strawberry.field(description="directive skip") def directive_skip(self) -> str: return "skip" @strawberry.field(description="directive include") def directive_include(self) -> str: return "include" ### query query ($skip: Boolean!, $include: Boolean!) { directiveSkip @skip(if: $skip) directiveInclude @include(if: $include) } ### query variables {"skip": false, "include": true} ### result { "data": { "directiveSkip": "skip", "directiveInclude": "include" } } ## uppercase ### code @strawberry.type class DirectiveQuery: @strawberry.field(description="directive uppercase") def directive_uppercase(self) -> str: return "make uppercase" @strawberry.directive( locations=[DirectiveLocation.FIELD], description="Make string uppercase" ) def uppercase(value: str): return value.upper() schema = strawberry.Schema( query=Query, mutation=Mutation, directives=[uppercase], ) ### query { directiveUppercase @uppercase } ### result { "data": { "directiveUppercase": "MAKE UPPERCASE" } } ### query { normal: directiveUppercase uppercase: directiveUppercase @uppercase } ### result { "data": { "normal": "make uppercase", "uppercase": "MAKE UPPERCASE" } } ## replace ### code @strawberry.type class Person: name: str = "Jess" @strawberry.type class DirectiveQuery: @strawberry.field def person(self) -> Person: return Person() @strawberry.directive(locations=[DirectiveLocation.FIELD]) def replace(value: str, old: str, new: str): value = value.replace(old, new) return value schema = strawberry.Schema( query=Query, mutation=Mutation, directives=[uppercase, replace], ) ### query { person { name @replace(old: "J", new: "John") } } ### result { "data": { "person": { "name": "Johness" } } } ## ref - https://github.com/strawberry-graphql/strawberry/blob/main/tests/schema/test_directives.py