Skip to content

Commit 92d94ae

Browse files
committed
feat[SBP-862]: add infinite query hook to openapi clientgen template
1 parent db9ca27 commit 92d94ae

File tree

4 files changed

+113
-14
lines changed

4 files changed

+113
-14
lines changed

dist/index.js

Lines changed: 75 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5241,7 +5241,7 @@ var templateExportHook = {"1":function(container,depth0,helpers,partials,data) {
52415241
return undefined
52425242
};
52435243

5244-
return ((stack1 = lookupProperty(helpers,"equals").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"method"),"GET",{"name":"equals","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(18, data, 0),"data":data,"loc":{"start":{"line":15,"column":2},"end":{"line":46,"column":13}}})) != null ? stack1 : "");
5244+
return ((stack1 = lookupProperty(helpers,"equals").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"method"),"GET",{"name":"equals","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(25, data, 0),"data":data,"loc":{"start":{"line":15,"column":2},"end":{"line":74,"column":13}}})) != null ? stack1 : "");
52455245
},"5":function(container,depth0,helpers,partials,data) {
52465246
var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
52475247
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
@@ -5270,7 +5270,9 @@ var templateExportHook = {"1":function(container,depth0,helpers,partials,data) {
52705270
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":20,"column":45},"end":{"line":20,"column":49}} ), depth0)) != null ? stack1 : "")
52715271
+ "("
52725272
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,lookupProperty(depth0,"parameters"),{"name":"if","hash":{},"fn":container.program(12, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":20,"column":52},"end":{"line":28,"column":18}}})) != null ? stack1 : "")
5273-
+ ");\n },\n ...options\n });\n };\n";
5273+
+ ");\n },\n ...options\n });\n };\n\n"
5274+
+ ((stack1 = lookupProperty(helpers,"contains").call(alias1,lookupProperty(depth0,"name"),"List",{"name":"contains","hash":{},"fn":container.program(18, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":34,"column":3},"end":{"line":58,"column":16}}})) != null ? stack1 : "")
5275+
+ "\n\n";
52745276
},"6":function(container,depth0,helpers,partials,data) {
52755277
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
52765278
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
@@ -5323,22 +5325,80 @@ var templateExportHook = {"1":function(container,depth0,helpers,partials,data) {
53235325
return undefined
53245326
};
53255327

5328+
return " export const useInfinite"
5329+
+ ((stack1 = lookupProperty(helpers,"pascalCase").call(alias1,lookupProperty(depth0,"name"),{"name":"pascalCase","hash":{},"data":data,"loc":{"start":{"line":35,"column":29},"end":{"line":35,"column":48}}})) != null ? stack1 : "")
5330+
+ " = ("
5331+
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,lookupProperty(depth0,"parameters"),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.program(8, data, 0),"data":data,"loc":{"start":{"line":35,"column":52},"end":{"line":35,"column":106}}})) != null ? stack1 : "")
5332+
+ ", options?: Partial<UseInfiniteQueryOptions<"
5333+
+ ((stack1 = container.invokePartial(lookupProperty(partials,"result"),depth0,{"name":"result","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
5334+
+ ">>) => {\n return useInfiniteQuery<"
5335+
+ ((stack1 = container.invokePartial(lookupProperty(partials,"result"),depth0,{"name":"result","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
5336+
+ ">({\n queryKey: ['"
5337+
+ ((stack1 = lookupProperty(helpers,"camelCase").call(alias1,lookupProperty(depth0,"service"),{"name":"camelCase","hash":{},"data":data,"loc":{"start":{"line":37,"column":19},"end":{"line":37,"column":41}}})) != null ? stack1 : "")
5338+
+ "', '"
5339+
+ ((stack1 = lookupProperty(helpers,"camelCase").call(alias1,lookupProperty(depth0,"name"),{"name":"camelCase","hash":{},"data":data,"loc":{"start":{"line":37,"column":45},"end":{"line":37,"column":65}}})) != null ? stack1 : "")
5340+
+ "', "
5341+
+ ((stack1 = lookupProperty(helpers,"each").call(alias1,lookupProperty(depth0,"parameters"),{"name":"each","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":37,"column":68},"end":{"line":37,"column":107}}})) != null ? stack1 : "")
5342+
+ "],\n queryFn: async ({ pageParam }) => {\n return client."
5343+
+ ((stack1 = lookupProperty(helpers,"camelCase").call(alias1,lookupProperty(depth0,"service"),{"name":"camelCase","hash":{},"data":data,"loc":{"start":{"line":39,"column":23},"end":{"line":39,"column":44}}})) != null ? stack1 : "")
5344+
+ "."
5345+
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":39,"column":47},"end":{"line":39,"column":51}} ), depth0)) != null ? stack1 : "")
5346+
+ "("
5347+
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,lookupProperty(depth0,"parameters"),{"name":"if","hash":{},"fn":container.program(19, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":39,"column":54},"end":{"line":48,"column":18}}})) != null ? stack1 : "")
5348+
+ ");\n },\n initialPageParam: null,\n getNextPageParam: (lastPage, allPages) => {\n const params = new URLSearchParams(lastPage.next_url.split('?')[1]);\n return params.get('cursor');\n },\n ...options\n });\n };\n";
5349+
},"19":function(container,depth0,helpers,partials,data) {
5350+
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
5351+
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
5352+
return parent[propertyName];
5353+
}
5354+
return undefined
5355+
};
5356+
5357+
return "{\n"
5358+
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"parameters"),{"name":"each","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":40,"column":9},"end":{"line":47,"column":18}}})) != null ? stack1 : "")
5359+
+ " }";
5360+
},"20":function(container,depth0,helpers,partials,data) {
5361+
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
5362+
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
5363+
return parent[propertyName];
5364+
}
5365+
return undefined
5366+
};
5367+
5368+
return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"name"),{"name":"if","hash":{},"fn":container.program(21, data, 0),"inverse":container.program(23, data, 0),"data":data,"loc":{"start":{"line":41,"column":10},"end":{"line":45,"column":17}}})) != null ? stack1 : "")
5369+
+ ",\n cursor: pageParam\n";
5370+
},"21":function(container,depth0,helpers,partials,data) {
5371+
var stack1;
5372+
5373+
return " "
5374+
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":42,"column":14},"end":{"line":42,"column":18}} ), depth0)) != null ? stack1 : "")
5375+
+ ",\n";
5376+
},"23":function(container,depth0,helpers,partials,data) {
5377+
return " _,\n ";
5378+
},"25":function(container,depth0,helpers,partials,data) {
5379+
var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
5380+
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
5381+
return parent[propertyName];
5382+
}
5383+
return undefined
5384+
};
5385+
53265386
return " export const use"
5327-
+ ((stack1 = lookupProperty(helpers,"pascalCase").call(alias1,lookupProperty(depth0,"name"),{"name":"pascalCase","hash":{},"data":data,"loc":{"start":{"line":34,"column":19},"end":{"line":34,"column":38}}})) != null ? stack1 : "")
5387+
+ ((stack1 = lookupProperty(helpers,"pascalCase").call(alias1,lookupProperty(depth0,"name"),{"name":"pascalCase","hash":{},"data":data,"loc":{"start":{"line":62,"column":19},"end":{"line":62,"column":38}}})) != null ? stack1 : "")
53285388
+ " = (options?: Partial<UseMutationOptions<"
53295389
+ ((stack1 = container.invokePartial(lookupProperty(partials,"result"),depth0,{"name":"result","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
53305390
+ ">>) => {\n return useMutation<"
53315391
+ ((stack1 = container.invokePartial(lookupProperty(partials,"result"),depth0,{"name":"result","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
53325392
+ ", any, any>({\n mutationFn: async ("
53335393
+ ((stack1 = container.invokePartial(lookupProperty(partials,"parameters"),depth0,{"name":"parameters","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
53345394
+ ") => {\n return client."
5335-
+ ((stack1 = lookupProperty(helpers,"camelCase").call(alias1,lookupProperty(depth0,"service"),{"name":"camelCase","hash":{},"data":data,"loc":{"start":{"line":37,"column":21},"end":{"line":37,"column":42}}})) != null ? stack1 : "")
5395+
+ ((stack1 = lookupProperty(helpers,"camelCase").call(alias1,lookupProperty(depth0,"service"),{"name":"camelCase","hash":{},"data":data,"loc":{"start":{"line":65,"column":21},"end":{"line":65,"column":42}}})) != null ? stack1 : "")
53365396
+ "."
5337-
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":37,"column":45},"end":{"line":37,"column":49}} ), depth0)) != null ? stack1 : "")
5397+
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":65,"column":45},"end":{"line":65,"column":49}} ), depth0)) != null ? stack1 : "")
53385398
+ "("
5339-
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,lookupProperty(depth0,"parameters"),{"name":"if","hash":{},"fn":container.program(19, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":37,"column":52},"end":{"line":41,"column":15}}})) != null ? stack1 : "")
5399+
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,lookupProperty(depth0,"parameters"),{"name":"if","hash":{},"fn":container.program(26, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":65,"column":52},"end":{"line":69,"column":15}}})) != null ? stack1 : "")
53405400
+ ");\n },\n ...options\n });\n };\n";
5341-
},"19":function(container,depth0,helpers,partials,data) {
5401+
},"26":function(container,depth0,helpers,partials,data) {
53425402
var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
53435403
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
53445404
return parent[propertyName];
@@ -5347,13 +5407,13 @@ var templateExportHook = {"1":function(container,depth0,helpers,partials,data) {
53475407
};
53485408

53495409
return "{\n"
5350-
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"parameters"),{"name":"each","hash":{},"fn":container.program(20, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":38,"column":9},"end":{"line":40,"column":18}}})) != null ? stack1 : "")
5410+
+ ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),lookupProperty(depth0,"parameters"),{"name":"each","hash":{},"fn":container.program(27, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":66,"column":9},"end":{"line":68,"column":18}}})) != null ? stack1 : "")
53515411
+ " }";
5352-
},"20":function(container,depth0,helpers,partials,data) {
5412+
},"27":function(container,depth0,helpers,partials,data) {
53535413
var stack1;
53545414

53555415
return " "
5356-
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":39,"column":13},"end":{"line":39,"column":17}} ), depth0)) != null ? stack1 : "")
5416+
+ ((stack1 = container.lambda(container.strict(depth0, "name", {"start":{"line":67,"column":13},"end":{"line":67,"column":17}} ), depth0)) != null ? stack1 : "")
53575417
+ ",\n";
53585418
},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) {
53595419
var stack1, alias1=container.strict, alias2=container.lambda, alias3=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
@@ -5364,14 +5424,14 @@ var templateExportHook = {"1":function(container,depth0,helpers,partials,data) {
53645424
};
53655425

53665426
return ((stack1 = container.invokePartial(lookupProperty(partials,"header"),depth0,{"name":"header","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "")
5367-
+ "import { useQuery, useMutation } from '@tanstack/react-query';\nimport type { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';\n\nimport { "
5427+
+ "import { useInfiniteQuery, useQuery, useMutation } from '@tanstack/react-query';\nimport type { UseInfiniteQueryOptions, UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';\n\nimport { "
53685428
+ ((stack1 = alias2(alias1(depth0, "clientName", {"start":{"line":5,"column":11},"end":{"line":5,"column":21}} ), depth0)) != null ? stack1 : "")
53695429
+ " } from '../../client';\n"
53705430
+ ((stack1 = lookupProperty(helpers,"if").call(alias3,lookupProperty(depth0,"imports"),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":6,"column":0},"end":{"line":10,"column":7}}})) != null ? stack1 : "")
53715431
+ "\nconst client = new "
53725432
+ ((stack1 = alias2(alias1(depth0, "clientName", {"start":{"line":12,"column":21},"end":{"line":12,"column":31}} ), depth0)) != null ? stack1 : "")
53735433
+ "();\n\n"
5374-
+ ((stack1 = lookupProperty(helpers,"each").call(alias3,lookupProperty(depth0,"operations"),{"name":"each","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":14,"column":0},"end":{"line":47,"column":9}}})) != null ? stack1 : "");
5434+
+ ((stack1 = lookupProperty(helpers,"each").call(alias3,lookupProperty(depth0,"operations"),{"name":"each","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":14,"column":0},"end":{"line":75,"column":9}}})) != null ? stack1 : "");
53755435
},"usePartial":true,"useData":true};
53765436

53775437
var templateIndex = {"1":function(container,depth0,helpers,partials,data) {
@@ -7134,6 +7194,9 @@ const registerHandlebarHelpers = (root) => {
71347194
Handlebars.registerHelper('notEquals', function (a, b, options) {
71357195
return a !== b ? options.fn(this) : options.inverse(this);
71367196
});
7197+
Handlebars.registerHelper('contains', function (value, search, options) {
7198+
return value.includes(search) ? options.fn(this) : options.inverse(this);
7199+
});
71377200
Handlebars.registerHelper('containsSpaces', function (value, options) {
71387201
return /\s+/.test(value) ? options.fn(this) : options.inverse(this);
71397202
});

rollup.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const handlebarsPlugin = () => ({
3131
knownHelpers: {
3232
ifdef: true,
3333
equals: true,
34+
contains: true,
3435
notEquals: true,
3536
containsSpaces: true,
3637
union: true,

src/templates/exportHook.hbs

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{{>header}}
2-
import { useQuery, useMutation } from '@tanstack/react-query';
3-
import type { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
2+
import { useInfiniteQuery, useQuery, useMutation } from '@tanstack/react-query';
3+
import type { UseInfiniteQueryOptions, UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
44

55
import { {{clientName}} } from '../../client';
66
{{#if imports}}
@@ -30,6 +30,34 @@ const client = new {{clientName}}();
3030
...options
3131
});
3232
};
33+
34+
{{#contains name 'List'}}
35+
export const useInfinite{{pascalCase name}} = ({{#if parameters}}{{>parameters}}{{else}}_: any{{/if}}, options?: Partial<UseInfiniteQueryOptions<{{>result}}>>) => {
36+
return useInfiniteQuery<{{>result}}>({
37+
queryKey: ['{{ camelCase service}}', '{{ camelCase name }}', {{#each parameters}}{{name}}, {{/each}}],
38+
queryFn: async ({ pageParam }) => {
39+
return client.{{camelCase service}}.{{name}}({{#if parameters}}{
40+
{{#each parameters}}
41+
{{#if name}}
42+
{{name}},
43+
{{else}}
44+
_,
45+
{{/if}},
46+
cursor: pageParam
47+
{{/each}}
48+
}{{/if}});
49+
},
50+
initialPageParam: null,
51+
getNextPageParam: (lastPage, allPages) => {
52+
const params = new URLSearchParams(lastPage.next_url.split('?')[1]);
53+
return params.get('cursor');
54+
},
55+
...options
56+
});
57+
};
58+
{{/contains}}
59+
60+
3361
{{else}}
3462
export const use{{pascalCase name}} = (options?: Partial<UseMutationOptions<{{>result}}>>) => {
3563
return useMutation<{{>result}}, any, any>({

src/utils/registerHandlebarHelpers.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ export const registerHandlebarHelpers = (root: {
3535
}
3636
);
3737

38+
Handlebars.registerHelper(
39+
'contains',
40+
function (this: any, value: string, search: string, options: Handlebars.HelperOptions): string {
41+
return value.includes(search) ? options.fn(this) : options.inverse(this);
42+
}
43+
);
44+
3845
Handlebars.registerHelper(
3946
'containsSpaces',
4047
function (this: any, value: string, options: Handlebars.HelperOptions): string {

0 commit comments

Comments
 (0)