openapi-backend
openapi-backend copied to clipboard
Parameter query is not converted to correct type
I have a definition:
parameters:
- name: from
in: query
description: Which page to get
required: false
schema:
type: integer
format: int64
But when it hits my handler e.g.:
export async function newslist(c, req, res) {
console.log('newslist:c.request.query: ' + JSON.stringify(c.request.query))
it becomes:
newslist:c.request.query: {"from":"123"}
instead of:
newslist:c.request.query: {"from":123}
So I have to do all the type converting which I would have thought openapi-backend would do for me.
On a similar note, I included the ajv-formats to use date-time
string format and was expecting to get a native Javascript Date but I don't, I just get a string that's been parsed for correctness.
I think openapi-backend should do these kinds of conversions but if it can't, do you have an easy way for me to add type converters?
@davidnewcomb I have a similar issue.
namespace Parameters {
export type ContainsText = string;
export type CreatedAfter = string; // date-time
export type MessageScope = "all" | "user" | "system";
export type OrderBy = "title" | "message" | "created" | "topic" | "origin";
export type OrderByDirec = "asc" | "desc";
export type PageNumber = number;
export type PageSize = number;
export type Read = boolean;
export type User = string;
}
export interface QueryParameters {
pageSize?: Parameters.PageSize;
pageNumber?: Parameters.PageNumber;
orderBy?: Parameters.OrderBy;
orderByDirec?: Parameters.OrderByDirec;
containsText?: Parameters.ContainsText;
createdAfter?: Parameters.CreatedAfter /* date-time */;
messageScope?: Parameters.MessageScope;
user?: Parameters.User;
read?: Parameters.Read;
}
namespace Responses {
export type $200 = Components.Schemas.Notifications;
}
}```
The number fields, such as pageSize, are in runtime of type string.
@davidnewcomb how did u enable 'date-time'