forked from loafle/openapi-generator-original
Typescript saga immutablejs enhancements and small fixes (#10444)
* first commit: add cli option for saga and records. Added dummy sagas.mustache test file.
* More progress with default values. First prototype for isEntity and isUniqueId.
* record generation complete
* record generation complete
* progress with saga generation
* progress with saga generation
* first fully working saga generation
* merge with latest master
* removed unneeded "items" properties.
* moved global CodegenModel modifications into subclass ExtendedCodegenModel used exclusively by TypescriptFetchClient. Adding missing samples files.
* moved global CodegenOperation modifications into subclass ExtendedCodegenOperation used exclusively by TypescriptFetchClient.
* moved global CodegenProperty modifications into subclass ExtendedCodegenProperty used exclusively by TypescriptFetchClient.
* moved global CodegenParameter modifications into subclass ExtendedCodegenParameter used exclusively by TypescriptFetchClient.
* added the missing "allSagas" export.
* renamed & reworked "meta data response" flags to a more useful general concept of "operation return passthrough"
* added vendor flag keepAsJSObject as escape hatch to support circular dependencies in models and other special cases. Also fixed issues with default values for some records properties.
* added autodetection for passthrough to simplify standardised specs.
* fix small issue with passthrough void
* fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values.
* fix small issues with passthrough void and missing passthrough imports in some cases. Fix issues with enum default values.
* Added "reservedRecordField" feature to support remapping fields names that cannot be used in Records. Added missing export to record: toApi().
* added uniqueId inference. Fix small generation when uniqueId property is an array.
* removed feature "reservedRecordField" and replaced it with existing built-in "reserved words" feature. Fix minor issues with typings in generated files.
* Changed api recType names to make them less likely to cause name conflicts. Added generated ApiEntities (record, reducer & selector) files.
* Moved location of ApiEntities related files and fix issues with exports.
* - merge latest master
- renamed fake test apis to better fit the "pet theme"
- added mode for "SourceOnlyLibrary" (same as used in codegen typescript jquery)
* - missing ganarate sampless
* - Modified way to export apiEntitiesSelectpr to reduce typescript analysis time for consuming project. Removed tab characters in mustache files. Reformat code for TypeScriptFetchClientCodegen to try to remove false positive for tabs vs spaces.
* - added markErrorsAsHandled property to api sagas. Increased typescript version to address some typing errors on library build.
* - fix bug in saga interfaces. Upgraded to typescript "strict" mode to ensure proper typechecking info is generated.
* - added optional id for apiEntity selectors. Added toInlined() support to convert an entity to an inlined model recursively.
* - minor tweak for apiEntitySelector to accept null id
* - minor tweak for apiEntitySelector
* - runned ensure up to date.
* Revert "- runned ensure up to date."
This reverts commit ea9b4aed
* - runned ensure up to date.
* - runned ensure up to date.
* - added more enhancements: New "toInlined" functionality. Support for more complex double array types. apiBaseConfiguration is not sent completely for Api.init().
* - merge master
* - fix generated api bug in some cases for typescript fetch when no request params are present.
* - commented broken tests
* - fix generate samples analysis.
* update surefire to newer version
* - un-commenting test files with issues.
* factored similar utility functions in ExtendedCodegenProperty and ExtendedCodegenParameter.
Co-authored-by: Bruno Flamand <bflamand@stingray.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
This commit is contained in:
@@ -708,15 +708,22 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
|
||||
var.dataTypeAlternate = var.dataType;
|
||||
if (var.isArray) {
|
||||
var.isUniqueId = var.isUniqueId || var.itemsAreUniqueId();
|
||||
var.dataTypeAlternate = var.dataType.replace("Array<", "List<");
|
||||
String newItemsDataType = var.getItemsDataType();
|
||||
if (var.items.isModel) {
|
||||
String itemsDataType = var.items.dataType + "Record";
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, itemsDataType);
|
||||
newItemsDataType = var.items.dataType + "Record";
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, newItemsDataType);
|
||||
} else if (var.items.isEnum) {
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, var.items.datatypeWithEnum);
|
||||
newItemsDataType = var.items.datatypeWithEnum;
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace(var.items.dataType, newItemsDataType);
|
||||
} else if (var.isUniqueId) {
|
||||
newItemsDataType = "string";
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace("number", newItemsDataType);
|
||||
}
|
||||
if (var.isUniqueId) {
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace("number", "string");
|
||||
|
||||
if (var.itemsAreNullable()) {
|
||||
var.dataTypeAlternate = var.dataTypeAlternate.replace(newItemsDataType, newItemsDataType + " | null");
|
||||
}
|
||||
} else if (var.isEnum) {
|
||||
var.dataTypeAlternate = var.datatypeWithEnum;
|
||||
@@ -724,6 +731,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
var.dataTypeAlternate = var.dataType + "Record";
|
||||
} else if (var.isUniqueId) {
|
||||
var.dataTypeAlternate = "string";
|
||||
if (var.isNullable) {
|
||||
var.dataTypeAlternate = var.dataTypeAlternate + " | null";
|
||||
}
|
||||
}
|
||||
if (var.defaultValue == null || var.defaultValue.equals("undefined")) {
|
||||
this.autoSetDefaultValueForProperty(var);
|
||||
@@ -732,6 +742,10 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
return parentIsEntity;
|
||||
}
|
||||
|
||||
private boolean itemsAreNullable(ExtendedCodegenProperty var) {
|
||||
return var.items.isNullable || (var.items.items != null && var.items.items.isNullable);
|
||||
}
|
||||
|
||||
private void escapeOperationIds(Map<String, Object> operations) {
|
||||
Map<String, Object> _operations = (Map<String, Object>) operations.get("operations");
|
||||
List<ExtendedCodegenOperation> operationList = (List<ExtendedCodegenOperation>) _operations.get("operation");
|
||||
@@ -816,19 +830,25 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
param.isUniqueId = this.isUniqueIdAccordingToNameSuffix(param.paramName);
|
||||
}
|
||||
|
||||
|
||||
param.dataTypeAlternate = param.dataType;
|
||||
if (param.isArray) {
|
||||
param.isUniqueId = param.isUniqueId || param.itemsAreUniqueId();
|
||||
param.dataTypeAlternate = param.dataType.replace("Array<", "List<");
|
||||
String newItemsDataType = param.getItemsDataType();
|
||||
if (param.items.isModel) {
|
||||
String itemsDataType = param.items.dataType + "Record";
|
||||
param.dataTypeAlternate = param.dataType.replace("Array<", "List<");
|
||||
param.dataTypeAlternate = param.dataTypeAlternate.replace(param.items.dataType, itemsDataType);
|
||||
newItemsDataType = param.items.dataType + "Record";
|
||||
param.dataTypeAlternate = param.dataTypeAlternate.replace(param.items.dataType, newItemsDataType);
|
||||
} else if (param.items.isEnum) {
|
||||
newItemsDataType = param.datatypeWithEnum.substring(param.datatypeWithEnum.lastIndexOf("<") + 1, param.datatypeWithEnum.indexOf(">"));
|
||||
param.dataTypeAlternate = param.datatypeWithEnum.replace("Array<", "List<");
|
||||
} else {
|
||||
param.dataTypeAlternate = param.dataType.replace("Array<", "List<");
|
||||
} else if (param.isUniqueId) {
|
||||
newItemsDataType = "string";
|
||||
param.dataTypeAlternate = param.dataTypeAlternate.replace("number", newItemsDataType);
|
||||
}
|
||||
if (param.isUniqueId) {
|
||||
param.dataTypeAlternate = param.dataTypeAlternate.replace("number", "string");
|
||||
|
||||
if (param.itemsAreNullable()) {
|
||||
param.dataTypeAlternate = param.dataTypeAlternate.replace(newItemsDataType, newItemsDataType + " | null");
|
||||
}
|
||||
} else if (param.isEnum) {
|
||||
param.dataTypeAlternate = param.datatypeWithEnum;
|
||||
@@ -836,6 +856,9 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
param.dataTypeAlternate = param.dataType + "Record";
|
||||
} else if (param.isUniqueId) {
|
||||
param.dataTypeAlternate = "string";
|
||||
if (param.isNullable) {
|
||||
param.dataTypeAlternate = param.dataTypeAlternate + " | null";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -912,10 +935,46 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
this.prefixParameterInterfaces = prefixParameterInterfaces;
|
||||
}
|
||||
|
||||
private static boolean itemsAreUniqueId(CodegenProperty items) {
|
||||
if (items.items != null) {
|
||||
return itemsAreUniqueId(items.items);
|
||||
};
|
||||
if (items.vendorExtensions.get(X_IS_UNIQUE_ID) instanceof Boolean) {
|
||||
return Boolean.TRUE.equals(items.vendorExtensions.get(X_IS_UNIQUE_ID));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean itemsAreNullable(CodegenProperty items) {
|
||||
if (items.items != null) {
|
||||
return itemsAreNullable(items.items);
|
||||
};
|
||||
return items.isNullable;
|
||||
}
|
||||
|
||||
private static String getItemsDataType(CodegenProperty items) {
|
||||
if (items.items != null) {
|
||||
return getItemsDataType(items.items);
|
||||
};
|
||||
return items.dataType;
|
||||
}
|
||||
|
||||
class ExtendedCodegenParameter extends CodegenParameter {
|
||||
public String dataTypeAlternate;
|
||||
public boolean isUniqueId; // this parameter represents a unique id (x-isUniqueId: true)
|
||||
|
||||
public boolean itemsAreUniqueId() {
|
||||
return TypeScriptFetchClientCodegen.itemsAreUniqueId(this.items);
|
||||
}
|
||||
|
||||
public boolean itemsAreNullable() {
|
||||
return TypeScriptFetchClientCodegen.itemsAreNullable(this.items);
|
||||
}
|
||||
|
||||
public String getItemsDataType() {
|
||||
return TypeScriptFetchClientCodegen.getItemsDataType(this.items);
|
||||
}
|
||||
|
||||
public ExtendedCodegenParameter(CodegenParameter cp) {
|
||||
super();
|
||||
|
||||
@@ -1035,6 +1094,18 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
|
||||
public boolean keepAsJSObject;
|
||||
public boolean isReservedRecordField;
|
||||
|
||||
public boolean itemsAreUniqueId() {
|
||||
return TypeScriptFetchClientCodegen.itemsAreUniqueId(this.items);
|
||||
}
|
||||
|
||||
public boolean itemsAreNullable() {
|
||||
return TypeScriptFetchClientCodegen.itemsAreNullable(this.items);
|
||||
}
|
||||
|
||||
public String getItemsDataType() {
|
||||
return TypeScriptFetchClientCodegen.getItemsDataType(this.items);
|
||||
}
|
||||
|
||||
public ExtendedCodegenProperty(CodegenProperty cp) {
|
||||
super();
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ export class {{classname}} extends runtime.BaseAPI {
|
||||
return await response.value();
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }{{/allParams.0}}, initOverrides);
|
||||
await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }, {{/allParams.0}}initOverrides);
|
||||
{{/returnType}}
|
||||
}
|
||||
{{/useSingleRequestParameter}}
|
||||
|
||||
@@ -96,7 +96,17 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname
|
||||
(apiObject as any).recType = {{#isEntity}}asEntity ? {{classname}}RecordEntityProps.recType : {{/isEntity}}{{classname}}RecordProps.recType;
|
||||
{{#vars}}
|
||||
{{#isUniqueId}}
|
||||
{{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.{{#isArray}}map(item => item.{{/isArray}}toString(){{#isArray}}){{/isArray}};{{^required}} } {{/required}}
|
||||
{{#isArray}}
|
||||
{{#items.isArray}}
|
||||
{{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.map(item => item.map(item2 => item2?.toString()));{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.map(item => item?.toString());{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}if (apiObject.{{name}}) { {{/required}}(apiObject as any).{{name}} = apiObject.{{name}}.toString();{{^required}} } {{/required}}
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{^keepAsJSObject}}
|
||||
{{#isModel}}
|
||||
@@ -134,6 +144,7 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntity{{classname}}Selector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -160,12 +171,14 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname
|
||||
{{#vars}}
|
||||
{{#isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
// @ts-ignore
|
||||
{{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toInlined, entity.{{name}}){{^required}} : null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
// @ts-ignore
|
||||
{{name}}: {{^required}}entity.{{name}} ? {{/required}}yield call({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toInlinedArray, entity.{{name}}){{^required}} : null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isEntity}}
|
||||
@@ -183,6 +196,7 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<{{classname}}Record>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
@@ -196,7 +210,17 @@ class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname
|
||||
const apiObject = super.toApi(record);
|
||||
{{#vars}}
|
||||
{{#isUniqueId}}
|
||||
{{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => parseFloat(item)).toArray(){{/isArray}}{{^isArray}}parseFloat(record.{{name}}){{/isArray}};{{^required}} } {{/required}}
|
||||
{{#isArray}}
|
||||
{{#items.isArray}}
|
||||
{{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{#isArray}}record.{{name}}.map(item => (item ? parseFloat(item) : null) as number).toArray(){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}if (record.{{name}}) { {{/required}}apiObject.{{name}} = {{^isArray}}parseFloat(record.{{name}}){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{^keepAsJSObject}}
|
||||
{{#isModel}}
|
||||
|
||||
@@ -18,15 +18,7 @@ export class Api {
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
|
||||
public static init(apiBasePath: string) {
|
||||
const apiBaseConfig: ConfigurationParameters = {
|
||||
basePath: apiBasePath,
|
||||
credentials: "include",
|
||||
headers: {
|
||||
'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls.
|
||||
}
|
||||
};
|
||||
|
||||
public static init(apiBaseConfig: ConfigurationParameters) {
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
Api.{{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}} = new {{classFilename}}(new Configuration(apiBaseConfig));
|
||||
|
||||
@@ -105,12 +105,17 @@ export function *{{nickname}}SagaImp(_action_: Action<Payload{{#lambda.titlecase
|
||||
|
||||
yield put({{nickname}}Request({{#allParams.0}}{{#returnTypeSupportsEntities}}requestPayload{{/returnTypeSupportsEntities}}{{^returnTypeSupportsEntities}}_action_.payload{{/returnTypeSupportsEntities}}{{/allParams.0}}));
|
||||
|
||||
const response{{#returnType}}: Required<{{{.}}}>{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{nickname}},
|
||||
const response{{#returnType}}: Required<{{{returnType}}}>{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{nickname}},
|
||||
{{#allParams.0}}
|
||||
{{#allParams}}
|
||||
{{#isUniqueId}}
|
||||
{{#isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => parseFloat(p)).toArray(){{^required}} : undefined{{/required}},
|
||||
{{#items.isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => p.toArray().map(p2 => (p2 ? parseFloat(p2) : null) as number)).toArray(){{^required}} : undefined{{/required}},
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => (p ? parseFloat(p) : null) as number ).toArray(){{^required}} : undefined{{/required}},
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}parseFloat({{paramName}}){{^required}} : undefined{{/required}},
|
||||
|
||||
@@ -50,4 +50,4 @@ public class MarkdownSampleGeneratorTest {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -295,6 +295,46 @@ paths:
|
||||
- 'write:pets'
|
||||
- 'read:pets'
|
||||
deprecated: true
|
||||
'/pet/{petId}/regions':
|
||||
get:
|
||||
tags:
|
||||
- pet
|
||||
summary: Gets regions for a single pet.
|
||||
operationId: getPetRegions
|
||||
parameters:
|
||||
- name: petId
|
||||
in: path
|
||||
description: ID of pet
|
||||
required: true
|
||||
type: integer
|
||||
format: int64
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
schema:
|
||||
$ref: "#/definitions/PetRegionsResponse"
|
||||
put:
|
||||
tags:
|
||||
- pet
|
||||
summary: Updates the pet regions.
|
||||
operationId: updatePetRegions
|
||||
parameters:
|
||||
- name: petId
|
||||
in: path
|
||||
description: ID of pet
|
||||
required: true
|
||||
type: integer
|
||||
format: int64
|
||||
- in: body
|
||||
name: new-regions
|
||||
required: true
|
||||
schema:
|
||||
$ref: "#/definitions/PetRegions"
|
||||
responses:
|
||||
200:
|
||||
description: OK
|
||||
schema:
|
||||
$ref: "#/definitions/PetRegionsResponse"
|
||||
'/pet/{petId}':
|
||||
get:
|
||||
tags:
|
||||
@@ -902,6 +942,8 @@ definitions:
|
||||
- pending
|
||||
- sold
|
||||
default: pending
|
||||
regions:
|
||||
$ref: "#/definitions/PetRegions"
|
||||
xml:
|
||||
name: Pet
|
||||
ApiResponse:
|
||||
@@ -1127,6 +1169,15 @@ definitions:
|
||||
- Long
|
||||
description: "Type of pet part"
|
||||
example: Linear
|
||||
PetRegionsResponse:
|
||||
type: object
|
||||
required:
|
||||
- meta
|
||||
properties:
|
||||
meta:
|
||||
$ref: "#/definitions/ResponseMeta"
|
||||
data:
|
||||
$ref: "#/definitions/PetRegions"
|
||||
GetMatchingPartsResponse:
|
||||
type: object
|
||||
required:
|
||||
@@ -1173,3 +1224,14 @@ definitions:
|
||||
StringBooleanMap:
|
||||
additionalProperties:
|
||||
type: boolean
|
||||
PetRegions:
|
||||
type: array
|
||||
description: "An array of all 15-minute time slots in 24 hours."
|
||||
items:
|
||||
type: array
|
||||
items:
|
||||
description: "array of values entity id or null."
|
||||
x-nullable: true
|
||||
x-isUniqueId: true
|
||||
type: integer
|
||||
format: int64
|
||||
|
||||
@@ -278,7 +278,7 @@ export class UserApi extends runtime.BaseAPI {
|
||||
* Logs out current logged in user session
|
||||
*/
|
||||
async logoutUser(initOverrides?: RequestInit): Promise<void> {
|
||||
await this.logoutUserRaw(, initOverrides);
|
||||
await this.logoutUserRaw(initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -57,6 +57,8 @@ src/models/Pet.ts
|
||||
src/models/PetPartType.ts
|
||||
src/models/PetPartTypeRecord.ts
|
||||
src/models/PetRecord.ts
|
||||
src/models/PetRegionsResponse.ts
|
||||
src/models/PetRegionsResponseRecord.ts
|
||||
src/models/ResponseMeta.ts
|
||||
src/models/ResponseMetaRecord.ts
|
||||
src/models/Tag.ts
|
||||
|
||||
@@ -30,6 +30,9 @@ import {
|
||||
Pet,
|
||||
PetFromJSON,
|
||||
PetToJSON,
|
||||
PetRegionsResponse,
|
||||
PetRegionsResponseFromJSON,
|
||||
PetRegionsResponseToJSON,
|
||||
} from '../models';
|
||||
|
||||
export interface AddPetRequest {
|
||||
@@ -61,10 +64,19 @@ export interface GetPetByIdRequest {
|
||||
petId: number;
|
||||
}
|
||||
|
||||
export interface GetPetRegionsRequest {
|
||||
petId: number;
|
||||
}
|
||||
|
||||
export interface UpdatePetRequest {
|
||||
body: Pet;
|
||||
}
|
||||
|
||||
export interface UpdatePetRegionsRequest {
|
||||
petId: number;
|
||||
newRegions: Array<Array<number>>;
|
||||
}
|
||||
|
||||
export interface UpdatePetWithFormRequest {
|
||||
petId: number;
|
||||
name?: string;
|
||||
@@ -357,6 +369,36 @@ export class PetApi extends runtime.BaseAPI {
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets regions for a single pet.
|
||||
*/
|
||||
async getPetRegionsRaw(requestParameters: GetPetRegionsRequest, initOverrides?: RequestInit): Promise<runtime.ApiResponse<PetRegionsResponse>> {
|
||||
if (requestParameters.petId === null || requestParameters.petId === undefined) {
|
||||
throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling getPetRegions.');
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}/regions`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PetRegionsResponseFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets regions for a single pet.
|
||||
*/
|
||||
async getPetRegions(petId: number, initOverrides?: RequestInit): Promise<PetRegionsResponse> {
|
||||
const response = await this.getPetRegionsRaw({ petId: petId }, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update an existing pet
|
||||
*/
|
||||
@@ -394,6 +436,43 @@ export class PetApi extends runtime.BaseAPI {
|
||||
await this.updatePetRaw({ body: body }, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the pet regions.
|
||||
*/
|
||||
async updatePetRegionsRaw(requestParameters: UpdatePetRegionsRequest, initOverrides?: RequestInit): Promise<runtime.ApiResponse<PetRegionsResponse>> {
|
||||
if (requestParameters.petId === null || requestParameters.petId === undefined) {
|
||||
throw new runtime.RequiredError('petId','Required parameter requestParameters.petId was null or undefined when calling updatePetRegions.');
|
||||
}
|
||||
|
||||
if (requestParameters.newRegions === null || requestParameters.newRegions === undefined) {
|
||||
throw new runtime.RequiredError('newRegions','Required parameter requestParameters.newRegions was null or undefined when calling updatePetRegions.');
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}/regions`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters.petId))),
|
||||
method: 'PUT',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: requestParameters.newRegions,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PetRegionsResponseFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the pet regions.
|
||||
*/
|
||||
async updatePetRegions(petId: number, newRegions: Array<Array<number>>, initOverrides?: RequestInit): Promise<PetRegionsResponse> {
|
||||
const response = await this.updatePetRegionsRaw({ petId: petId, newRegions: newRegions }, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a pet in the store with form data
|
||||
*/
|
||||
|
||||
@@ -35,6 +35,9 @@ import {
|
||||
Pet,
|
||||
PetRecord,
|
||||
petRecordUtils,
|
||||
PetRegionsResponse,
|
||||
PetRegionsResponseRecord,
|
||||
petRegionsResponseRecordUtils,
|
||||
UserRecord,
|
||||
} from '../models';
|
||||
|
||||
@@ -52,7 +55,9 @@ export const petApiSagaMap = new Map<string, () => Generator<any, any, any>>([
|
||||
["findPetsByTags", findPetsByTagsSaga],
|
||||
["findPetsByUserIds", findPetsByUserIdsSaga],
|
||||
["getPetById", getPetByIdSaga],
|
||||
["getPetRegions", getPetRegionsSaga],
|
||||
["updatePet", updatePetSaga],
|
||||
["updatePetRegions", updatePetRegionsSaga],
|
||||
["updatePetWithForm", updatePetWithFormSaga],
|
||||
["uploadFile", uploadFileSaga],
|
||||
]
|
||||
@@ -180,7 +185,7 @@ export function *findPetsByIdsSagaImp(_action_: Action<PayloadFindPetsByIds>) {
|
||||
yield put(findPetsByIdsRequest(requestPayload));
|
||||
|
||||
const response: Required<Array<Pet>> = yield apiCall(Api.petApi, Api.petApi.findPetsByIds,
|
||||
ids.map(p => parseFloat(p)).toArray(),
|
||||
ids.map(p => (p ? parseFloat(p) : null) as number ).toArray(),
|
||||
);
|
||||
|
||||
let successReturnValue: any = undefined;
|
||||
@@ -339,7 +344,7 @@ export function *findPetsByUserIdsSagaImp(_action_: Action<PayloadFindPetsByUser
|
||||
yield put(findPetsByUserIdsRequest(requestPayload));
|
||||
|
||||
const response: Required<FindPetsByUserResponse> = yield apiCall(Api.petApi, Api.petApi.findPetsByUserIds,
|
||||
ids.map(p => parseFloat(p)).toArray(),
|
||||
ids.map(p => (p ? parseFloat(p) : null) as number ).toArray(),
|
||||
);
|
||||
|
||||
let successReturnValue: any = undefined;
|
||||
@@ -414,6 +419,50 @@ export function *getPetByIdSagaImp(_action_: Action<PayloadGetPetById>) {
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
//region getPetRegions
|
||||
|
||||
export interface PayloadGetPetRegions extends PayloadGetPetRegionsRequest, BasePayloadApiAction {
|
||||
}
|
||||
|
||||
export interface PayloadGetPetRegionsRequest {
|
||||
petId: string;
|
||||
}
|
||||
|
||||
export const getPetRegionsRequest = createSagaAction<PayloadGetPetRegionsRequest>("getPetRegionsRequest");
|
||||
export const getPetRegionsSuccess = createSagaAction<List<List<string | null>>>("getPetRegionsSuccess");
|
||||
export const getPetRegionsFailure = createSagaAction<{error: any, requestPayload: PayloadGetPetRegions}>("getPetRegionsFailure");
|
||||
|
||||
export const getPetRegions = createSagaAction<PayloadGetPetRegions>("getPetRegions");
|
||||
|
||||
export function *getPetRegionsSaga() {
|
||||
yield takeLatest(getPetRegions, getPetRegionsSagaImp);
|
||||
}
|
||||
|
||||
export function *getPetRegionsSagaImp(_action_: Action<PayloadGetPetRegions>) {
|
||||
const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload;
|
||||
try {
|
||||
const {
|
||||
petId,
|
||||
} = _payloadRest_;
|
||||
|
||||
yield put(getPetRegionsRequest(_action_.payload));
|
||||
|
||||
const response: Required<PetRegionsResponse> = yield apiCall(Api.petApi, Api.petApi.getPetRegions,
|
||||
parseFloat(petId),
|
||||
);
|
||||
|
||||
let successReturnValue: any = undefined;
|
||||
successReturnValue = petRegionsResponseRecordUtils.fromApiPassthrough(response);
|
||||
yield put(getPetRegionsSuccess(successReturnValue));
|
||||
|
||||
return successReturnValue;
|
||||
} catch (error) {
|
||||
if (markErrorsAsHandled) {error.wasHandled = true; }
|
||||
yield put(getPetRegionsFailure({error, requestPayload: _action_.payload}));
|
||||
return error;
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
//region updatePet
|
||||
|
||||
export interface PayloadUpdatePet extends PayloadUpdatePetRequest, BasePayloadApiAction {
|
||||
@@ -456,6 +505,53 @@ export function *updatePetSagaImp(_action_: Action<PayloadUpdatePet>) {
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
//region updatePetRegions
|
||||
|
||||
export interface PayloadUpdatePetRegions extends PayloadUpdatePetRegionsRequest, BasePayloadApiAction {
|
||||
}
|
||||
|
||||
export interface PayloadUpdatePetRegionsRequest {
|
||||
petId: string;
|
||||
newRegions: List<List<string | null>>;
|
||||
}
|
||||
|
||||
export const updatePetRegionsRequest = createSagaAction<PayloadUpdatePetRegionsRequest>("updatePetRegionsRequest");
|
||||
export const updatePetRegionsSuccess = createSagaAction<List<List<string | null>>>("updatePetRegionsSuccess");
|
||||
export const updatePetRegionsFailure = createSagaAction<{error: any, requestPayload: PayloadUpdatePetRegions}>("updatePetRegionsFailure");
|
||||
|
||||
export const updatePetRegions = createSagaAction<PayloadUpdatePetRegions>("updatePetRegions");
|
||||
|
||||
export function *updatePetRegionsSaga() {
|
||||
yield takeLatest(updatePetRegions, updatePetRegionsSagaImp);
|
||||
}
|
||||
|
||||
export function *updatePetRegionsSagaImp(_action_: Action<PayloadUpdatePetRegions>) {
|
||||
const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload;
|
||||
try {
|
||||
const {
|
||||
petId,
|
||||
newRegions,
|
||||
} = _payloadRest_;
|
||||
|
||||
yield put(updatePetRegionsRequest(_action_.payload));
|
||||
|
||||
const response: Required<PetRegionsResponse> = yield apiCall(Api.petApi, Api.petApi.updatePetRegions,
|
||||
parseFloat(petId),
|
||||
newRegions.map(p => p.toArray().map(p2 => (p2 ? parseFloat(p2) : null) as number)).toArray(),
|
||||
);
|
||||
|
||||
let successReturnValue: any = undefined;
|
||||
successReturnValue = petRegionsResponseRecordUtils.fromApiPassthrough(response);
|
||||
yield put(updatePetRegionsSuccess(successReturnValue));
|
||||
|
||||
return successReturnValue;
|
||||
} catch (error) {
|
||||
if (markErrorsAsHandled) {error.wasHandled = true; }
|
||||
yield put(updatePetRegionsFailure({error, requestPayload: _action_.payload}));
|
||||
return error;
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
//region updatePetWithForm
|
||||
|
||||
export interface PayloadUpdatePetWithForm extends PayloadUpdatePetWithFormRequest, BasePayloadApiAction {
|
||||
|
||||
@@ -18,15 +18,7 @@ export class Api {
|
||||
public static storeApi: StoreApi;
|
||||
public static userApi: UserApi;
|
||||
|
||||
public static init(apiBasePath: string) {
|
||||
const apiBaseConfig: ConfigurationParameters = {
|
||||
basePath: apiBasePath,
|
||||
credentials: "include",
|
||||
headers: {
|
||||
'Cache-Control': 'no-cache, no-store' // this is needed to prevent stalling issues in Chrome. Also it is a good behavior for api calls.
|
||||
}
|
||||
};
|
||||
|
||||
public static init(apiBaseConfig: ConfigurationParameters) {
|
||||
Api.behaviorApi = new BehaviorApi(new Configuration(apiBaseConfig));
|
||||
Api.petApi = new PetApi(new Configuration(apiBaseConfig));
|
||||
Api.petPartApi = new PetPartApi(new Configuration(apiBaseConfig));
|
||||
|
||||
@@ -281,7 +281,7 @@ export class UserApi extends runtime.BaseAPI {
|
||||
* Logs out current logged in user session
|
||||
*/
|
||||
async logoutUser(initOverrides?: RequestInit): Promise<void> {
|
||||
await this.logoutUserRaw(, initOverrides);
|
||||
await this.logoutUserRaw(initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,6 +61,7 @@ class CategoryRecordUtils extends ApiRecordUtils<Category, CategoryRecord> {
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntityCategorySelector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -82,6 +83,7 @@ class CategoryRecordUtils extends ApiRecordUtils<Category, CategoryRecord> {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<CategoryRecord>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { exists, mapValues } from '../runtime';
|
||||
import {
|
||||
ResponseMeta,
|
||||
ResponseMetaFromJSON,
|
||||
ResponseMetaFromJSONTyped,
|
||||
ResponseMetaToJSON,
|
||||
} from './';
|
||||
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface GetPetRegionsResponse
|
||||
*/
|
||||
export interface GetPetRegionsResponse {
|
||||
/**
|
||||
*
|
||||
* @type {ResponseMeta}
|
||||
* @memberof GetPetRegionsResponse
|
||||
*/
|
||||
meta: ResponseMeta;
|
||||
/**
|
||||
* An array of all 15-minute time slots in 24 hours.
|
||||
* @type {Array<Array<number>>}
|
||||
* @memberof GetPetRegionsResponse
|
||||
*/
|
||||
data?: Array<Array<number>>;
|
||||
}
|
||||
|
||||
export function GetPetRegionsResponseFromJSON(json: any): GetPetRegionsResponse {
|
||||
return GetPetRegionsResponseFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function GetPetRegionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetPetRegionsResponse {
|
||||
if ((json === undefined) || (json === null)) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'meta': ResponseMetaFromJSON(json['meta']),
|
||||
'data': !exists(json, 'data') ? undefined : json['data'],
|
||||
};
|
||||
}
|
||||
|
||||
export function GetPetRegionsResponseToJSON(value?: GetPetRegionsResponse | null): any {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
if (value === null) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
|
||||
'meta': ResponseMetaToJSON(value.meta),
|
||||
'data': value.data,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords";
|
||||
import {getApiEntitiesState} from "../ApiEntitiesSelectors"
|
||||
import {List, Record, RecordOf, Map} from 'immutable';
|
||||
import {Schema, schema, NormalizedSchema} from "normalizr";
|
||||
import {select, call} from "redux-saga/effects";
|
||||
|
||||
import {
|
||||
GetPetRegionsResponse,
|
||||
} from './GetPetRegionsResponse';
|
||||
|
||||
import {
|
||||
ResponseMeta,
|
||||
} from './ResponseMeta';
|
||||
|
||||
import {
|
||||
ResponseMetaRecord,
|
||||
responseMetaRecordUtils
|
||||
} from './ResponseMetaRecord';
|
||||
|
||||
export const GetPetRegionsResponseRecordProps = {
|
||||
recType: "GetPetRegionsResponseApiRecord" as "GetPetRegionsResponseApiRecord",
|
||||
meta: ResponseMetaRecord(),
|
||||
data: null as List<List<string | null>> | null,
|
||||
};
|
||||
|
||||
export type GetPetRegionsResponseRecordPropsType = typeof GetPetRegionsResponseRecordProps;
|
||||
export const GetPetRegionsResponseRecord = Record(GetPetRegionsResponseRecordProps, GetPetRegionsResponseRecordProps.recType);
|
||||
export type GetPetRegionsResponseRecord = RecordOf<GetPetRegionsResponseRecordPropsType>;
|
||||
|
||||
knownRecordFactories.set(GetPetRegionsResponseRecordProps.recType, GetPetRegionsResponseRecord);
|
||||
|
||||
|
||||
class GetPetRegionsResponseRecordUtils extends ApiRecordUtils<GetPetRegionsResponse, GetPetRegionsResponseRecord> {
|
||||
public normalize(apiObject: GetPetRegionsResponse, asEntity?: boolean): GetPetRegionsResponse {
|
||||
(apiObject as any).recType = GetPetRegionsResponseRecordProps.recType;
|
||||
responseMetaRecordUtils.normalize(apiObject.meta);
|
||||
if (apiObject.data) { (apiObject as any).data = apiObject.data.map(item => item.map(item2 => item2?.toString())); }
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
public toApi(record: GetPetRegionsResponseRecord): GetPetRegionsResponse {
|
||||
const apiObject = super.toApi(record);
|
||||
apiObject.meta = responseMetaRecordUtils.toApi(record.meta);
|
||||
if (record.data) { apiObject.data = record.data.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); }
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
public fromApiPassthrough(apiObject: GetPetRegionsResponse): List<List<string | null>> {
|
||||
return appFromJS(apiObject.data);
|
||||
}
|
||||
|
||||
public fromApiPassthroughAsEntities(apiObject: GetPetRegionsResponse): NormalizedRecordEntities {
|
||||
console.log("entities revival not supported on this response");
|
||||
return {entities: {}, result: List<string>()};
|
||||
}
|
||||
}
|
||||
|
||||
export const getPetRegionsResponseRecordUtils = new GetPetRegionsResponseRecordUtils();
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ class OrderRecordUtils extends ApiRecordUtils<Order, OrderRecord> {
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntityOrderSelector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -87,6 +88,7 @@ class OrderRecordUtils extends ApiRecordUtils<Order, OrderRecord> {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<OrderRecord>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
|
||||
@@ -158,6 +158,12 @@ export interface Pet {
|
||||
* @memberof Pet
|
||||
*/
|
||||
status: PetStatusEnum;
|
||||
/**
|
||||
* An array of all 15-minute time slots in 24 hours.
|
||||
* @type {Array<Array<number>>}
|
||||
* @memberof Pet
|
||||
*/
|
||||
regions?: Array<Array<number>>;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -200,6 +206,7 @@ export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
|
||||
'tags': ((json['tags'] as Array<any>).map(TagFromJSON)),
|
||||
'optionalTags': !exists(json, 'optionalTags') ? undefined : ((json['optionalTags'] as Array<any>).map(TagFromJSON)),
|
||||
'status': json['status'],
|
||||
'regions': !exists(json, 'regions') ? undefined : json['regions'],
|
||||
};
|
||||
}
|
||||
|
||||
@@ -232,6 +239,7 @@ export function PetToJSON(value?: Pet | null): any {
|
||||
'tags': ((value.tags as Array<any>).map(TagToJSON)),
|
||||
'optionalTags': value.optionalTags === undefined ? undefined : ((value.optionalTags as Array<any>).map(TagToJSON)),
|
||||
'status': value.status,
|
||||
'regions': value.regions,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ export const PetRecordProps = {
|
||||
tags: (TagRecord(), List<TagRecord>()),
|
||||
optionalTags: (TagRecord(), null as List<TagRecord> | null),
|
||||
status: PetStatusEnum.Pending,
|
||||
regions: null as List<List<string | null>> | null,
|
||||
};
|
||||
|
||||
export type PetRecordPropsType = typeof PetRecordProps;
|
||||
@@ -96,12 +97,13 @@ class PetRecordUtils extends ApiRecordUtils<Pet, PetRecord> {
|
||||
(apiObject as any).recType = asEntity ? PetRecordEntityProps.recType : PetRecordProps.recType;
|
||||
(apiObject as any).id = apiObject.id.toString();
|
||||
if (apiObject.friendId) { (apiObject as any).friendId = apiObject.friendId.toString(); }
|
||||
(apiObject as any).otherFriendIds = apiObject.otherFriendIds.map(item => item.toString());
|
||||
(apiObject as any).otherFriendIds = apiObject.otherFriendIds.map(item => item?.toString());
|
||||
categoryRecordUtils.normalize(apiObject.category);
|
||||
if (apiObject.optionalCategory) { categoryRecordUtils.normalize(apiObject.optionalCategory); }
|
||||
if (apiObject._entries) { categoryRecordUtils.normalizeArray(apiObject._entries); }
|
||||
tagRecordUtils.normalizeArray(apiObject.tags);
|
||||
if (apiObject.optionalTags) { tagRecordUtils.normalizeArray(apiObject.optionalTags); }
|
||||
if (apiObject.regions) { (apiObject as any).regions = apiObject.regions.map(item => item.map(item2 => item2?.toString())); }
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
@@ -117,6 +119,7 @@ class PetRecordUtils extends ApiRecordUtils<Pet, PetRecord> {
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntityPetSelector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -131,10 +134,15 @@ class PetRecordUtils extends ApiRecordUtils<Pet, PetRecord> {
|
||||
} = entity;
|
||||
|
||||
const entityProperties = {
|
||||
// @ts-ignore
|
||||
category: yield call(categoryRecordUtils.toInlined, entity.category),
|
||||
// @ts-ignore
|
||||
optionalCategory: entity.optionalCategory ? yield call(categoryRecordUtils.toInlined, entity.optionalCategory) : null,
|
||||
// @ts-ignore
|
||||
_entries: entity._entries ? yield call(categoryRecordUtils.toInlinedArray, entity._entries) : null,
|
||||
// @ts-ignore
|
||||
tags: yield call(tagRecordUtils.toInlinedArray, entity.tags),
|
||||
// @ts-ignore
|
||||
optionalTags: entity.optionalTags ? yield call(tagRecordUtils.toInlinedArray, entity.optionalTags) : null,
|
||||
}
|
||||
|
||||
@@ -148,6 +156,7 @@ class PetRecordUtils extends ApiRecordUtils<Pet, PetRecord> {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<PetRecord>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
@@ -160,12 +169,13 @@ class PetRecordUtils extends ApiRecordUtils<Pet, PetRecord> {
|
||||
const apiObject = super.toApi(record);
|
||||
apiObject.id = parseFloat(record.id);
|
||||
if (record.friendId) { apiObject.friendId = parseFloat(record.friendId); }
|
||||
apiObject.otherFriendIds = record.otherFriendIds.map(item => parseFloat(item)).toArray();
|
||||
apiObject.otherFriendIds = record.otherFriendIds.map(item => (item ? parseFloat(item) : null) as number).toArray();
|
||||
apiObject.category = categoryRecordUtils.toApi(record.category);
|
||||
if (record.optionalCategory) { apiObject.optionalCategory = categoryRecordUtils.toApi(record.optionalCategory); }
|
||||
if (record._entries) { apiObject._entries = categoryRecordUtils.toApiArray(record._entries); }
|
||||
apiObject.tags = tagRecordUtils.toApiArray(record.tags);
|
||||
if (record.optionalTags) { apiObject.optionalTags = tagRecordUtils.toApiArray(record.optionalTags); }
|
||||
if (record.regions) { apiObject.regions = record.regions.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); }
|
||||
return apiObject;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { exists, mapValues } from '../runtime';
|
||||
import {
|
||||
ResponseMeta,
|
||||
ResponseMetaFromJSON,
|
||||
ResponseMetaFromJSONTyped,
|
||||
ResponseMetaToJSON,
|
||||
} from './';
|
||||
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface PetRegionsResponse
|
||||
*/
|
||||
export interface PetRegionsResponse {
|
||||
/**
|
||||
*
|
||||
* @type {ResponseMeta}
|
||||
* @memberof PetRegionsResponse
|
||||
*/
|
||||
meta: ResponseMeta;
|
||||
/**
|
||||
* An array of all 15-minute time slots in 24 hours.
|
||||
* @type {Array<Array<number>>}
|
||||
* @memberof PetRegionsResponse
|
||||
*/
|
||||
data?: Array<Array<number>>;
|
||||
}
|
||||
|
||||
export function PetRegionsResponseFromJSON(json: any): PetRegionsResponse {
|
||||
return PetRegionsResponseFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function PetRegionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PetRegionsResponse {
|
||||
if ((json === undefined) || (json === null)) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'meta': ResponseMetaFromJSON(json['meta']),
|
||||
'data': !exists(json, 'data') ? undefined : json['data'],
|
||||
};
|
||||
}
|
||||
|
||||
export function PetRegionsResponseToJSON(value?: PetRegionsResponse | null): any {
|
||||
if (value === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
if (value === null) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
|
||||
'meta': ResponseMetaToJSON(value.meta),
|
||||
'data': value.data,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import {ApiRecordUtils, knownRecordFactories, appFromJS, NormalizedRecordEntities} from "../runtimeSagasAndRecords";
|
||||
import {getApiEntitiesState} from "../ApiEntitiesSelectors"
|
||||
import {List, Record, RecordOf, Map} from 'immutable';
|
||||
import {Schema, schema, NormalizedSchema} from "normalizr";
|
||||
import {select, call} from "redux-saga/effects";
|
||||
|
||||
import {
|
||||
PetRegionsResponse,
|
||||
} from './PetRegionsResponse';
|
||||
|
||||
import {
|
||||
ResponseMeta,
|
||||
} from './ResponseMeta';
|
||||
|
||||
import {
|
||||
ResponseMetaRecord,
|
||||
responseMetaRecordUtils
|
||||
} from './ResponseMetaRecord';
|
||||
|
||||
export const PetRegionsResponseRecordProps = {
|
||||
recType: "PetRegionsResponseApiRecord" as "PetRegionsResponseApiRecord",
|
||||
meta: ResponseMetaRecord(),
|
||||
data: null as List<List<string | null>> | null,
|
||||
};
|
||||
|
||||
export type PetRegionsResponseRecordPropsType = typeof PetRegionsResponseRecordProps;
|
||||
export const PetRegionsResponseRecord = Record(PetRegionsResponseRecordProps, PetRegionsResponseRecordProps.recType);
|
||||
export type PetRegionsResponseRecord = RecordOf<PetRegionsResponseRecordPropsType>;
|
||||
|
||||
knownRecordFactories.set(PetRegionsResponseRecordProps.recType, PetRegionsResponseRecord);
|
||||
|
||||
|
||||
class PetRegionsResponseRecordUtils extends ApiRecordUtils<PetRegionsResponse, PetRegionsResponseRecord> {
|
||||
public normalize(apiObject: PetRegionsResponse, asEntity?: boolean): PetRegionsResponse {
|
||||
(apiObject as any).recType = PetRegionsResponseRecordProps.recType;
|
||||
responseMetaRecordUtils.normalize(apiObject.meta);
|
||||
if (apiObject.data) { (apiObject as any).data = apiObject.data.map(item => item.map(item2 => item2?.toString())); }
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
public toApi(record: PetRegionsResponseRecord): PetRegionsResponse {
|
||||
const apiObject = super.toApi(record);
|
||||
apiObject.meta = responseMetaRecordUtils.toApi(record.meta);
|
||||
if (record.data) { apiObject.data = record.data.map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(); }
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
public fromApiPassthrough(apiObject: PetRegionsResponse): List<List<string | null>> {
|
||||
return appFromJS(apiObject.data);
|
||||
}
|
||||
|
||||
public fromApiPassthroughAsEntities(apiObject: PetRegionsResponse): NormalizedRecordEntities {
|
||||
console.log("entities revival not supported on this response");
|
||||
return {entities: {}, result: List<string>()};
|
||||
}
|
||||
}
|
||||
|
||||
export const petRegionsResponseRecordUtils = new PetRegionsResponseRecordUtils();
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ class TagRecordUtils extends ApiRecordUtils<Tag, TagRecord> {
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntityTagSelector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -82,6 +83,7 @@ class TagRecordUtils extends ApiRecordUtils<Tag, TagRecord> {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<TagRecord>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
|
||||
@@ -69,6 +69,7 @@ class UserRecordUtils extends ApiRecordUtils<User, UserRecord> {
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntityUserSelector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
@@ -90,6 +91,7 @@ class UserRecordUtils extends ApiRecordUtils<User, UserRecord> {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<UserRecord>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
|
||||
@@ -34,6 +34,8 @@ export * from './PartRecord';
|
||||
export * from './Pet';
|
||||
export * from './PetRecord';
|
||||
export * from './PetPartType';
|
||||
export * from './PetRegionsResponse';
|
||||
export * from './PetRegionsResponseRecord';
|
||||
export * from './ResponseMeta';
|
||||
export * from './ResponseMetaRecord';
|
||||
export * from './Tag';
|
||||
|
||||
Reference in New Issue
Block a user