Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions apps/server/docs/openapi-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -267,13 +267,27 @@ async function main() {
})
}
else if (dName === 'param') {
// Try to infer schema type from TS type or pipes like ParseIntPipe
const callExpr = deco.getCallExpression()
const decoArgs = callExpr ? callExpr.getArguments() : []
const hasParseIntPipe = decoArgs.some((arg) => arg.getText().includes('ParseIntPipe'))

let inferredType: any = { type: 'string' }
if (hasParseIntPipe) {
inferredType = { type: 'integer' }
}
else if (paramType.isNumber()) {
inferredType = { type: 'number' }
}
else if (paramType.isBoolean()) {
inferredType = { type: 'boolean' }
}

parameters.push({
name: param.getName(),
in: 'path', // query, param
in: 'path',
required: !param.isOptional(),
schema: {
type: 'string',
},
schema: inferredType,
})
}
else {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 코드 패치에는 몇 가지 잠재적인 문제가 있습니다. 먼저, 'inferredType' 변수가 'integer', 'number', 'boolean'으로 설정되는 경우에 대한 처리로 인해, 예상치 못한 타입이 반환될 가능성이 있습니다. 'string' 타입이 기본값으로 설정되지만, 'ParseIntPipe'가 존재할 경우에는 'integer'로만 변경되기 때문에, 다른 숫자 또는 불리언 타입이 더 많이 사용될 가능성도 고려해야 합니다. 또한, 파라미터 타입이 'undefined'일 경우를 처리하는 코드는 보이지 않으며, 이러한 경우에 대한 예외 처리 로직이 필요합니다. 마찬가지로, 'decoArgs'가 빈 배열일 경우에도 안전한 처리가 필요합니다. 보안 및 코드 안정성 강화를 위해 더 깨끗한 타입 검증 로직을 고려하고, 최악의 경우 모든 가능한 타입에 대한 처리를 다루는 것이 좋습니다. 마지막으로, 코드 주석이 추가된 것은 좋지만, 코드의 목적이나 사용 규칙을 더 명확히 설명하는 주석이 있으면 좋을 것 같습니다.

Expand Down
Loading