1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2025-09-05 10:12:46 +00:00

WIP: Refractor C++-side. Loader should be working again

This commit is contained in:
Chris Josten 2021-03-25 17:32:00 +01:00
parent 2360b261f7
commit 9643482ae1
840 changed files with 100813 additions and 23560 deletions

View file

@ -8,10 +8,10 @@
class {{className}} : public {{supportNamespace}}::HttpLoader<{{dtoNamespace}}::{{endpoint.resultType}}, {{endpoint.parameterType}}> {
public:
explicit {{className}}(ApiClient *apiClient);
explicit {{className}}(ApiClient *apiClient = nullptr);
protected:
QString url(const {{endpoint.parameterType}}& parameters) const override;
QString path(const {{endpoint.parameterType}}& parameters) const override;
QUrlQuery query(const {{endpoint.parameterType}}& parameters) const override;
};
{{/if}}

View file

@ -1,2 +1,34 @@
{{#if endpoint.hasSuccessResponse}}
{{className}}::{{className}}(ApiClient *apiClient)
: Loader<>(apiClient) {}
: {{supportNamespace}}::HttpLoader<{{dtoNamespace}}::{{endpoint.resultType}}, {{endpoint.parameterType}}>(apiClient) {}
QString {{className}}::path(const {{endpoint.parameterType}} &params) const {
Q_UNUSED(params) // Might be overzealous, but I don't like theses kind of warnings
return {{pathStringInterpolation "params"}};
}
QUrlQuery {{className}}::query(const {{endpoint.parameterType}} &params) const {
Q_UNUSED(params) // Might be overzealous, but I don't like theses kind of warnings
QUrlQuery result;
{{#each endpoint.requiredQueryParameters as |p|}}
result.addQueryItem("{{p.name}}", params.{{p.type.name}}());
{{/each}}
// Optional parameters
{{#each endpoint.optionalQueryParameters as |p|}}
if (!params.{{p.type.name}}Null()) {
result.addQueryItem("{{p.name}}", Support::toString(params.{{p.type.name}}()));
}
{{/each}}
return result;
}
{{/if}}

View file

@ -5,14 +5,23 @@ class {{e.name}} {
public:
{{#each e.parameters as |param|}}
/**
* @brief {{param.description}}
*/
{{param.type.typeNameWithQualifiers}} {{param.type.name}}() const;
void set{{param.type.writeName}}({{param.type.typeNameWithQualifiers}} new{{param.type.writeName}}) const;
{{#if param.required}}
const {{param.type.typeNameWithQualifiers}} &{{param.type.name}}() const;
void set{{param.type.writeName}}({{param.type.typeNameWithQualifiers}} new{{param.type.writeName}});
{{else}}
const {{param.type.typeName}} &{{param.type.name}}() const;
void set{{param.type.writeName}}({{param.type.typeName}} new{{param.type.writeName}});
bool {{param.type.name}}Null() const;
void set{{param.type.writeName}}Null();
{{/if}}
{{/each}}
@ -29,13 +38,6 @@ private:
{{#each e.requiredQueryParameters as |param|}}
{{param.type.typeNameWithQualifiers}} {{param.type.memberName}};
{{/each}}
// Optional path parameters
{{#each e.optionalPathParameters as |param|}}
{{param.type.typeNameWithQualifiers}} {{param.type.memberName}};
{{/each}}
// Optional query parameters

View file

@ -0,0 +1,57 @@
using namespace {{dtoNamespace}};
{{#each endpoints as |e|}}
// {{e.name}}
{{#each e.parameters as |param|}}
{{#if param.required}}
const {{param.type.typeNameWithQualifiers}} &{{e.name}}::{{param.type.name}}() const {
return {{param.type.memberName}};
}
void {{e.name}}::set{{param.type.writeName}}({{param.type.typeNameWithQualifiers}} new{{param.type.writeName}}) {
{{param.type.memberName}} = new{{param.type.writeName}};
}
{{else}}
const {{param.type.typeName}} &{{e.name}}::{{param.type.name}}() const {
{{#if param.type.needsOptional}}
return {{param.type.memberName}}.value();
{{else}}
return {{param.type.memberName}};
{{/if}}
}
void {{e.name}}::set{{param.type.writeName}}({{param.type.typeName}} new{{param.type.writeName}}) {
{{param.type.memberName}} = new{{param.type.writeName}};
}
bool {{e.name}}::{{param.type.name}}Null() const {
// Nullable: {{param.type.isNullable}}
// Type Nullable: {{param.type.isTypeNullable}}
return {{param.type.nullableCheck}};
}
void {{e.name}}::set{{param.type.writeName}}Null() {
{{param.type.memberName}}{{param.type.nullableSetter}};
}
{{/if}}
{{/each}}
{{/each}}