Skip to content

Commit 91f2148

Browse files
authored
feat(javascript): add task trigger type guards (#1280)
1 parent ca4ff31 commit 91f2148

File tree

4 files changed

+52
-5
lines changed

4 files changed

+52
-5
lines changed

generators/src/main/java/com/algolia/codegen/AlgoliaJavaScriptGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private void setDefaultGeneratorOptions() {
119119
additionalProperties.put("algoliaAgent", Utils.capitalize(CLIENT));
120120
additionalProperties.put("gitRepoId", "algoliasearch-client-javascript");
121121
additionalProperties.put("isSearchClient", CLIENT.equals("search"));
122-
additionalProperties.put("useAlgoliaUA", !CLIENT.equals("ingestion"));
122+
additionalProperties.put("isIngestionClient", CLIENT.equals("ingestion"));
123123
additionalProperties.put("isAlgoliasearchClient", isAlgoliasearchClient);
124124

125125
if (isAlgoliasearchClient) {

templates/javascript/clients/api-single.mustache

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ export function create{{capitalizedApiName}}({
2020
hosts: getDefaultHosts({{^hasRegionalHost}}appIdOption{{/hasRegionalHost}}{{#hasRegionalHost}}regionOption{{/hasRegionalHost}}),
2121
...options,
2222
algoliaAgent:
23-
{{^useAlgoliaUA}}
23+
{{#isIngestionClient}}
2424
{...getAlgoliaAgent({
2525
algoliaAgents,
2626
client: '{{{algoliaAgent}}}',
2727
version: apiClientVersion,
2828
}), value: ''},
29-
{{/useAlgoliaUA}}
30-
{{#useAlgoliaUA}}
29+
{{/isIngestionClient}}
30+
{{^isIngestionClient}}
3131
getAlgoliaAgent({
3232
algoliaAgents,
3333
client: '{{{algoliaAgent}}}',
3434
version: apiClientVersion,
3535
}),
36-
{{/useAlgoliaUA}}
36+
{{/isIngestionClient}}
3737
baseHeaders: {
3838
'content-type': 'text/plain',
3939
...auth.headers(),
@@ -83,6 +83,9 @@ export function create{{capitalizedApiName}}({
8383
{{#isSearchClient}}
8484
{{> client/api/helpers}}
8585
{{/isSearchClient}}
86+
{{#isIngestionClient}}
87+
{{> client/api/guards}}
88+
{{/isIngestionClient}}
8689
{{#operation}}
8790
{{> client/api/operation/jsdoc}}
8891
{{nickname}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}( {{> client/api/operation/parameters}} ) : Promise<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}{{#vendorExtensions.x-is-generic}}<T>{{/vendorExtensions.x-is-generic}}> {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{{#isIngestionClient}}
2+
/**
3+
* Guard: Return strongly typed specific OnDemandTrigger for a given Trigger.
4+
*
5+
* @summary Guard method that returns a strongly typed specific OnDemandTrigger for a given Trigger.
6+
* @param trigger - The given Task Trigger.
7+
*/
8+
isOnDemandTrigger(
9+
trigger: Trigger
10+
): trigger is OnDemandTrigger {
11+
return trigger.type === 'on_demand';
12+
},
13+
14+
/**
15+
* Guard: Return strongly typed specific ScheduleTrigger for a given Trigger.
16+
*
17+
* @summary Guard method that returns a strongly typed specific ScheduleTrigger for a given Trigger.
18+
* @param trigger - The given Task Trigger.
19+
*/
20+
isScheduleTrigger(
21+
trigger: Trigger
22+
): trigger is ScheduleTrigger {
23+
return trigger.type === 'schedule';
24+
},
25+
26+
/**
27+
* Guard: Return strongly typed specific SubscriptionTrigger for a given Trigger.
28+
*
29+
* @summary Guard method that returns a strongly typed specific SubscriptionTrigger for a given Trigger.
30+
* @param trigger - The given Task Trigger.
31+
*/
32+
isSubscriptionTrigger(
33+
trigger: Trigger
34+
): trigger is SubscriptionTrigger {
35+
return trigger.type === 'subscription';
36+
},
37+
{{/isIngestionClient}}

templates/javascript/clients/client/api/imports.mustache

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,10 @@ import type {
4343
{{/operation}}
4444
} from '../model/clientMethodProps';
4545
{{/operations}}
46+
47+
{{#isIngestionClient}}
48+
import type { Trigger } from '../model/trigger';
49+
import type { OnDemandTrigger } from '../model/onDemandTrigger';
50+
import type { ScheduleTrigger } from '../model/scheduleTrigger';
51+
import type { SubscriptionTrigger } from '../model/subscriptionTrigger';
52+
{{/isIngestionClient}}

0 commit comments

Comments
 (0)