Skip to content

Commit 5600821

Browse files
authored
feat: adding request options to graphql data source (#1220)
1 parent ef8a9fb commit 5600821

File tree

5 files changed

+49
-5
lines changed

5 files changed

+49
-5
lines changed

projects/observability/src/shared/dashboard/data/graphql/graphql-data-source.model.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import {
44
dataSourceMarker,
55
ModelApi,
66
ModelEventPublisher,
7-
ModelProperty
7+
ModelModelPropertyTypeInstance,
8+
ModelProperty,
9+
ModelPropertyType
810
} from '@hypertrace/hyperdash';
911
import { ModelInject, MODEL_API } from '@hypertrace/hyperdash-angular';
12+
import { GraphQlRequestOptionsModel } from './request-option/graphql-request-options.model';
1013

1114
import {
1215
GraphQlQueryHandler,
@@ -32,6 +35,15 @@ export abstract class GraphQlDataSourceModel<TData> implements DataSource<TData>
3235
})
3336
public filters: GraphQlFilter[] = [];
3437

38+
@ModelProperty({
39+
// tslint:disable-next-line: no-object-literal-type-assertion
40+
type: {
41+
key: ModelPropertyType.TYPE
42+
} as ModelModelPropertyTypeInstance,
43+
key: 'request-options'
44+
})
45+
public requestOptions?: GraphQlRequestOptionsModel;
46+
3547
@ModelInject(MODEL_API)
3648
public api!: ModelApi;
3749
public abstract getData(): Observable<TData>;
@@ -61,7 +73,7 @@ export abstract class GraphQlDataSourceModel<TData> implements DataSource<TData>
6173

6274
this.querySubject.next({
6375
buildRequest: this.convertToBuilder(requestOrBuilder),
64-
requestOptions: requestOptions,
76+
requestOptions: requestOptions ?? this.requestOptions,
6577
responseObserver: resultSubject as Observer<unknown>
6678
});
6779

projects/observability/src/shared/dashboard/data/graphql/graphql-data-source.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { GraphQlFilterDataSourceModel } from './filter/graphql-filter-data-sourc
77
import { GraphqlIdScopeFilterModel } from './filter/graphql-id-scope-filter.model';
88
import { GraphQlKeyValueFilterModel } from './filter/graphql-key-value-filter.model';
99
import { GRAPHQL_DATA_SOURCE_HANDLER_PROVIDERS } from './graphql-handler-configuration';
10+
import { GraphQlRequestOptionsModel } from './request-option/graphql-request-options.model';
1011
import { SpanDataSourceModel } from './span/span-data-source.model';
1112
import { AttributeSpecificationModel } from './specifiers/attribute-specification.model';
1213
import { CompositeSpecificationModel } from './specifiers/composite-specification.model';
@@ -30,6 +31,7 @@ import { TraceWaterfallDataSourceModel } from './waterfall/trace-waterfall-data-
3031
GraphQlFilterDataSourceModel,
3132
GraphQlKeyValueFilterModel,
3233
GraphqlIdScopeFilterModel,
34+
GraphQlRequestOptionsModel,
3335
SpansTableDataSourceModel,
3436
TracesTableDataSourceModel,
3537
SpanDataSourceModel,
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { BOOLEAN_PROPERTY, Model, ModelProperty } from '@hypertrace/hyperdash';
2+
3+
import { EnumPropertyTypeInstance, ENUM_TYPE } from '@hypertrace/dashboards';
4+
import { GraphQlRequestCacheability } from '@hypertrace/graphql-client';
5+
6+
@Model({
7+
type: 'request-options'
8+
})
9+
export class GraphQlRequestOptionsModel {
10+
@ModelProperty({
11+
key: 'cacheability',
12+
required: false,
13+
// tslint:disable-next-line: no-object-literal-type-assertion
14+
type: {
15+
key: ENUM_TYPE.type,
16+
values: [
17+
GraphQlRequestCacheability.NotCacheable,
18+
GraphQlRequestCacheability.RefreshCache,
19+
GraphQlRequestCacheability.Cacheable
20+
]
21+
} as EnumPropertyTypeInstance
22+
})
23+
public cacheability?: GraphQlRequestCacheability;
24+
25+
@ModelProperty({
26+
key: 'isolated',
27+
type: BOOLEAN_PROPERTY.type
28+
})
29+
public isolated?: boolean;
30+
}

projects/observability/src/shared/dashboard/data/graphql/table/table-data-source.model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export abstract class TableDataSourceModel extends GraphQlDataSourceModel<TableD
3030
});
3131
}
3232

33-
protected buildGraphqlRequestOptions(): GraphQlRequestOptions {
34-
return {};
33+
protected buildGraphqlRequestOptions(): GraphQlRequestOptions | undefined {
34+
return undefined;
3535
}
3636

3737
public abstract getScope(): string | undefined;

projects/observability/src/shared/dashboard/data/graphql/topology/topology-data-source.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export class TopologyDataSourceModel extends GraphQlDataSourceModel<TopologyData
8585
public edgeMetricsModel!: TopologyMetricsModel;
8686

8787
private readonly specBuilder: SpecificationBuilder = new SpecificationBuilder();
88-
private readonly requestOptions: GraphQlRequestOptions = {
88+
public readonly requestOptions: GraphQlRequestOptions = {
8989
cacheability: GraphQlRequestCacheability.Cacheable,
9090
isolated: true
9191
};

0 commit comments

Comments
 (0)