|
1 | 1 | # frozen_string_literal: true |
| 2 | +require "graphql/tracing/trace" |
| 3 | +require "graphql/tracing/legacy_trace" |
| 4 | + |
2 | 5 | # Legacy tracing: |
3 | 6 | require "graphql/tracing/active_support_notifications_tracing" |
4 | 7 | require "graphql/tracing/platform_tracing" |
|
26 | 29 |
|
27 | 30 | module GraphQL |
28 | 31 | module Tracing |
29 | | - class Trace |
30 | | - # @param multiplex [GraphQL::Execution::Multiplex, nil] |
31 | | - # @param query [GraphQL::Query, nil] |
32 | | - def initialize(multiplex: nil, query: nil, **_options) |
33 | | - @multiplex = multiplex |
34 | | - @query = query |
35 | | - end |
36 | | - |
37 | | - def lex(query_string:) |
38 | | - yield |
39 | | - end |
40 | | - |
41 | | - def parse(query_string:) |
42 | | - yield |
43 | | - end |
44 | | - |
45 | | - def validate(query:, validate:) |
46 | | - yield |
47 | | - end |
48 | | - |
49 | | - def analyze_multiplex(multiplex:) |
50 | | - yield |
51 | | - end |
52 | | - |
53 | | - def analyze_query(query:) |
54 | | - yield |
55 | | - end |
56 | | - |
57 | | - def execute_multiplex(multiplex:) |
58 | | - yield |
59 | | - end |
60 | | - |
61 | | - def execute_query(query:) |
62 | | - yield |
63 | | - end |
64 | | - |
65 | | - def execute_query_lazy(query:, multiplex:) |
66 | | - yield |
67 | | - end |
68 | | - |
69 | | - def execute_field(field:, query:, ast_node:, arguments:, object:) |
70 | | - yield |
71 | | - end |
72 | | - |
73 | | - def execute_field_lazy(field:, query:, ast_node:, arguments:, object:) |
74 | | - yield |
75 | | - end |
76 | | - |
77 | | - def authorized(query:, type:, object:) |
78 | | - yield |
79 | | - end |
80 | | - |
81 | | - def authorized_lazy(query:, type:, object:) |
82 | | - yield |
83 | | - end |
84 | | - |
85 | | - def resolve_type(query:, type:, object:) |
86 | | - yield |
87 | | - end |
88 | | - |
89 | | - def resolve_type_lazy(query:, type:, object:) |
90 | | - yield |
91 | | - end |
92 | | - end |
93 | | - |
94 | 32 | NullTrace = Trace.new |
95 | 33 |
|
96 | | - class LegacyTrace < Trace |
97 | | - def lex(query_string:, &block) |
98 | | - (@multiplex || @query).trace("lex", { query_string: query_string }, &block) |
99 | | - end |
100 | | - |
101 | | - def parse(query_string:, &block) |
102 | | - (@multiplex || @query).trace("parse", { query_string: query_string }, &block) |
103 | | - end |
104 | | - |
105 | | - def validate(query:, validate:, &block) |
106 | | - query.trace("validate", { validate: validate, query: query }, &block) |
107 | | - end |
108 | | - |
109 | | - def analyze_multiplex(multiplex:, &block) |
110 | | - multiplex.trace("analyze_multiplex", { multiplex: multiplex }, &block) |
111 | | - end |
112 | | - |
113 | | - def analyze_query(query:, &block) |
114 | | - query.trace("analyze_query", { query: query }, &block) |
115 | | - end |
116 | | - |
117 | | - def execute_multiplex(multiplex:, &block) |
118 | | - multiplex.trace("execute_multiplex", { multiplex: multiplex }, &block) |
119 | | - end |
120 | | - |
121 | | - def execute_query(query:, &block) |
122 | | - query.trace("execute_query", { query: query }, &block) |
123 | | - end |
124 | | - |
125 | | - def execute_query_lazy(query:, multiplex:, &block) |
126 | | - multiplex.trace("execute_query_lazy", { multiplex: multiplex, query: query }, &block) |
127 | | - end |
128 | | - |
129 | | - def execute_field(field:, query:, ast_node:, arguments:, object:, &block) |
130 | | - query.trace("execute_field", { field: field, query: query, ast_node: ast_node, arguments: arguments, object: object, owner: field.owner, path: query.context[:current_path] }, &block) |
131 | | - end |
132 | | - |
133 | | - def execute_field_lazy(field:, query:, ast_node:, arguments:, object:, &block) |
134 | | - query.trace("execute_field_lazy", { field: field, query: query, ast_node: ast_node, arguments: arguments, object: object, owner: field.owner, path: query.context[:current_path] }, &block) |
135 | | - end |
136 | | - |
137 | | - def authorized(query:, type:, object:, &block) |
138 | | - query.trace("authorized", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block) |
139 | | - end |
140 | | - |
141 | | - def authorized_lazy(query:, type:, object:, &block) |
142 | | - query.trace("authorized_lazy", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block) |
143 | | - end |
144 | | - |
145 | | - def resolve_type(query:, type:, object:, &block) |
146 | | - query.trace("resolve_type", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block) |
147 | | - end |
148 | | - |
149 | | - def resolve_type_lazy(query:, type:, object:, &block) |
150 | | - query.trace("resolve_type_lazy", { context: query.context, type: type, object: object, path: query.context[:current_path] }, &block) |
151 | | - end |
152 | | - end |
153 | | - |
154 | 34 | # Objects may include traceable to gain a `.trace(...)` method. |
155 | 35 | # The object must have a `@tracers` ivar of type `Array<<#trace(k, d, &b)>>`. |
156 | 36 | # @api private |
|
0 commit comments