♻️ Remove modify id script in favor of openapi-ts config (#1434)

This commit is contained in:
Patrick Arminio
2024-11-27 12:42:44 +01:00
committed by GitHub
parent b7d2df2f81
commit 953e9e5416
5 changed files with 133 additions and 157 deletions

View File

@@ -1,36 +0,0 @@
import * as fs from "node:fs"
async function modifyOpenAPIFile(filePath) {
try {
const data = await fs.promises.readFile(filePath)
const openapiContent = JSON.parse(data)
const paths = openapiContent.paths
for (const pathKey of Object.keys(paths)) {
const pathData = paths[pathKey]
for (const method of Object.keys(pathData)) {
const operation = pathData[method]
if (operation.tags && operation.tags.length > 0) {
const tag = operation.tags[0]
const operationId = operation.operationId
const toRemove = `${tag}-`
if (operationId.startsWith(toRemove)) {
const newOperationId = operationId.substring(toRemove.length)
operation.operationId = newOperationId
}
}
}
}
await fs.promises.writeFile(
filePath,
JSON.stringify(openapiContent, null, 2),
)
console.log("File successfully modified")
} catch (err) {
console.error("Error:", err)
}
}
const filePath = "./openapi.json"
modifyOpenAPIFile(filePath)

View File

@@ -10,6 +10,19 @@ export default defineConfig({
name: "@hey-api/sdk", name: "@hey-api/sdk",
// NOTE: this doesn't allow tree-shaking // NOTE: this doesn't allow tree-shaking
asClass: true, asClass: true,
operationId: true,
methodNameBuilder: (operation) => {
// @ts-ignore
let name: string = operation.name
// @ts-ignore
let service: string = operation.service
if (service && name.toLowerCase().startsWith(service.toLowerCase())) {
name = name.slice(service.length)
}
return name.charAt(0).toLowerCase() + name.slice(1)
},
}, },
], ],
}) })

View File

@@ -4,46 +4,46 @@ import type { CancelablePromise } from "./core/CancelablePromise"
import { OpenAPI } from "./core/OpenAPI" import { OpenAPI } from "./core/OpenAPI"
import { request as __request } from "./core/request" import { request as __request } from "./core/request"
import type { import type {
ReadItemsData, ItemsReadItemsData,
ReadItemsResponse, ItemsReadItemsResponse,
CreateItemData, ItemsCreateItemData,
CreateItemResponse, ItemsCreateItemResponse,
ReadItemData, ItemsReadItemData,
ReadItemResponse, ItemsReadItemResponse,
UpdateItemData, ItemsUpdateItemData,
UpdateItemResponse, ItemsUpdateItemResponse,
DeleteItemData, ItemsDeleteItemData,
DeleteItemResponse, ItemsDeleteItemResponse,
LoginAccessTokenData, LoginLoginAccessTokenData,
LoginAccessTokenResponse, LoginLoginAccessTokenResponse,
TestTokenResponse, LoginTestTokenResponse,
RecoverPasswordData, LoginRecoverPasswordData,
RecoverPasswordResponse, LoginRecoverPasswordResponse,
ResetPasswordData, LoginResetPasswordData,
ResetPasswordResponse, LoginResetPasswordResponse,
RecoverPasswordHtmlContentData, LoginRecoverPasswordHtmlContentData,
RecoverPasswordHtmlContentResponse, LoginRecoverPasswordHtmlContentResponse,
ReadUsersData, UsersReadUsersData,
ReadUsersResponse, UsersReadUsersResponse,
CreateUserData, UsersCreateUserData,
CreateUserResponse, UsersCreateUserResponse,
ReadUserMeResponse, UsersReadUserMeResponse,
DeleteUserMeResponse, UsersDeleteUserMeResponse,
UpdateUserMeData, UsersUpdateUserMeData,
UpdateUserMeResponse, UsersUpdateUserMeResponse,
UpdatePasswordMeData, UsersUpdatePasswordMeData,
UpdatePasswordMeResponse, UsersUpdatePasswordMeResponse,
RegisterUserData, UsersRegisterUserData,
RegisterUserResponse, UsersRegisterUserResponse,
ReadUserByIdData, UsersReadUserByIdData,
ReadUserByIdResponse, UsersReadUserByIdResponse,
UpdateUserData, UsersUpdateUserData,
UpdateUserResponse, UsersUpdateUserResponse,
DeleteUserData, UsersDeleteUserData,
DeleteUserResponse, UsersDeleteUserResponse,
TestEmailData, UtilsTestEmailData,
TestEmailResponse, UtilsTestEmailResponse,
HealthCheckResponse, UtilsHealthCheckResponse,
} from "./types.gen" } from "./types.gen"
export class ItemsService { export class ItemsService {
@@ -57,8 +57,8 @@ export class ItemsService {
* @throws ApiError * @throws ApiError
*/ */
public static readItems( public static readItems(
data: ReadItemsData = {}, data: ItemsReadItemsData = {},
): CancelablePromise<ReadItemsResponse> { ): CancelablePromise<ItemsReadItemsResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/items/", url: "/api/v1/items/",
@@ -81,8 +81,8 @@ export class ItemsService {
* @throws ApiError * @throws ApiError
*/ */
public static createItem( public static createItem(
data: CreateItemData, data: ItemsCreateItemData,
): CancelablePromise<CreateItemResponse> { ): CancelablePromise<ItemsCreateItemResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/items/", url: "/api/v1/items/",
@@ -103,8 +103,8 @@ export class ItemsService {
* @throws ApiError * @throws ApiError
*/ */
public static readItem( public static readItem(
data: ReadItemData, data: ItemsReadItemData,
): CancelablePromise<ReadItemResponse> { ): CancelablePromise<ItemsReadItemResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/items/{id}", url: "/api/v1/items/{id}",
@@ -127,8 +127,8 @@ export class ItemsService {
* @throws ApiError * @throws ApiError
*/ */
public static updateItem( public static updateItem(
data: UpdateItemData, data: ItemsUpdateItemData,
): CancelablePromise<UpdateItemResponse> { ): CancelablePromise<ItemsUpdateItemResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "PUT", method: "PUT",
url: "/api/v1/items/{id}", url: "/api/v1/items/{id}",
@@ -152,8 +152,8 @@ export class ItemsService {
* @throws ApiError * @throws ApiError
*/ */
public static deleteItem( public static deleteItem(
data: DeleteItemData, data: ItemsDeleteItemData,
): CancelablePromise<DeleteItemResponse> { ): CancelablePromise<ItemsDeleteItemResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "DELETE", method: "DELETE",
url: "/api/v1/items/{id}", url: "/api/v1/items/{id}",
@@ -177,8 +177,8 @@ export class LoginService {
* @throws ApiError * @throws ApiError
*/ */
public static loginAccessToken( public static loginAccessToken(
data: LoginAccessTokenData, data: LoginLoginAccessTokenData,
): CancelablePromise<LoginAccessTokenResponse> { ): CancelablePromise<LoginLoginAccessTokenResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/login/access-token", url: "/api/v1/login/access-token",
@@ -196,7 +196,7 @@ export class LoginService {
* @returns UserPublic Successful Response * @returns UserPublic Successful Response
* @throws ApiError * @throws ApiError
*/ */
public static testToken(): CancelablePromise<TestTokenResponse> { public static testToken(): CancelablePromise<LoginTestTokenResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/login/test-token", url: "/api/v1/login/test-token",
@@ -212,8 +212,8 @@ export class LoginService {
* @throws ApiError * @throws ApiError
*/ */
public static recoverPassword( public static recoverPassword(
data: RecoverPasswordData, data: LoginRecoverPasswordData,
): CancelablePromise<RecoverPasswordResponse> { ): CancelablePromise<LoginRecoverPasswordResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/password-recovery/{email}", url: "/api/v1/password-recovery/{email}",
@@ -235,8 +235,8 @@ export class LoginService {
* @throws ApiError * @throws ApiError
*/ */
public static resetPassword( public static resetPassword(
data: ResetPasswordData, data: LoginResetPasswordData,
): CancelablePromise<ResetPasswordResponse> { ): CancelablePromise<LoginResetPasswordResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/reset-password/", url: "/api/v1/reset-password/",
@@ -257,8 +257,8 @@ export class LoginService {
* @throws ApiError * @throws ApiError
*/ */
public static recoverPasswordHtmlContent( public static recoverPasswordHtmlContent(
data: RecoverPasswordHtmlContentData, data: LoginRecoverPasswordHtmlContentData,
): CancelablePromise<RecoverPasswordHtmlContentResponse> { ): CancelablePromise<LoginRecoverPasswordHtmlContentResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/password-recovery-html-content/{email}", url: "/api/v1/password-recovery-html-content/{email}",
@@ -283,8 +283,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static readUsers( public static readUsers(
data: ReadUsersData = {}, data: UsersReadUsersData = {},
): CancelablePromise<ReadUsersResponse> { ): CancelablePromise<UsersReadUsersResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/users/", url: "/api/v1/users/",
@@ -307,8 +307,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static createUser( public static createUser(
data: CreateUserData, data: UsersCreateUserData,
): CancelablePromise<CreateUserResponse> { ): CancelablePromise<UsersCreateUserResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/users/", url: "/api/v1/users/",
@@ -326,7 +326,7 @@ export class UsersService {
* @returns UserPublic Successful Response * @returns UserPublic Successful Response
* @throws ApiError * @throws ApiError
*/ */
public static readUserMe(): CancelablePromise<ReadUserMeResponse> { public static readUserMe(): CancelablePromise<UsersReadUserMeResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/users/me", url: "/api/v1/users/me",
@@ -339,7 +339,7 @@ export class UsersService {
* @returns Message Successful Response * @returns Message Successful Response
* @throws ApiError * @throws ApiError
*/ */
public static deleteUserMe(): CancelablePromise<DeleteUserMeResponse> { public static deleteUserMe(): CancelablePromise<UsersDeleteUserMeResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "DELETE", method: "DELETE",
url: "/api/v1/users/me", url: "/api/v1/users/me",
@@ -355,8 +355,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static updateUserMe( public static updateUserMe(
data: UpdateUserMeData, data: UsersUpdateUserMeData,
): CancelablePromise<UpdateUserMeResponse> { ): CancelablePromise<UsersUpdateUserMeResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "PATCH", method: "PATCH",
url: "/api/v1/users/me", url: "/api/v1/users/me",
@@ -377,8 +377,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static updatePasswordMe( public static updatePasswordMe(
data: UpdatePasswordMeData, data: UsersUpdatePasswordMeData,
): CancelablePromise<UpdatePasswordMeResponse> { ): CancelablePromise<UsersUpdatePasswordMeResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "PATCH", method: "PATCH",
url: "/api/v1/users/me/password", url: "/api/v1/users/me/password",
@@ -399,8 +399,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static registerUser( public static registerUser(
data: RegisterUserData, data: UsersRegisterUserData,
): CancelablePromise<RegisterUserResponse> { ): CancelablePromise<UsersRegisterUserResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/users/signup", url: "/api/v1/users/signup",
@@ -421,8 +421,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static readUserById( public static readUserById(
data: ReadUserByIdData, data: UsersReadUserByIdData,
): CancelablePromise<ReadUserByIdResponse> { ): CancelablePromise<UsersReadUserByIdResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/users/{user_id}", url: "/api/v1/users/{user_id}",
@@ -445,8 +445,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static updateUser( public static updateUser(
data: UpdateUserData, data: UsersUpdateUserData,
): CancelablePromise<UpdateUserResponse> { ): CancelablePromise<UsersUpdateUserResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "PATCH", method: "PATCH",
url: "/api/v1/users/{user_id}", url: "/api/v1/users/{user_id}",
@@ -470,8 +470,8 @@ export class UsersService {
* @throws ApiError * @throws ApiError
*/ */
public static deleteUser( public static deleteUser(
data: DeleteUserData, data: UsersDeleteUserData,
): CancelablePromise<DeleteUserResponse> { ): CancelablePromise<UsersDeleteUserResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "DELETE", method: "DELETE",
url: "/api/v1/users/{user_id}", url: "/api/v1/users/{user_id}",
@@ -495,8 +495,8 @@ export class UtilsService {
* @throws ApiError * @throws ApiError
*/ */
public static testEmail( public static testEmail(
data: TestEmailData, data: UtilsTestEmailData,
): CancelablePromise<TestEmailResponse> { ): CancelablePromise<UtilsTestEmailResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "POST", method: "POST",
url: "/api/v1/utils/test-email/", url: "/api/v1/utils/test-email/",
@@ -514,7 +514,7 @@ export class UtilsService {
* @returns boolean Successful Response * @returns boolean Successful Response
* @throws ApiError * @throws ApiError
*/ */
public static healthCheck(): CancelablePromise<HealthCheckResponse> { public static healthCheck(): CancelablePromise<UtilsHealthCheckResponse> {
return __request(OpenAPI, { return __request(OpenAPI, {
method: "GET", method: "GET",
url: "/api/v1/utils/health-check/", url: "/api/v1/utils/health-check/",

View File

@@ -100,122 +100,122 @@ export type ValidationError = {
type: string type: string
} }
export type ReadItemsData = { export type ItemsReadItemsData = {
limit?: number limit?: number
skip?: number skip?: number
} }
export type ReadItemsResponse = ItemsPublic export type ItemsReadItemsResponse = ItemsPublic
export type CreateItemData = { export type ItemsCreateItemData = {
requestBody: ItemCreate requestBody: ItemCreate
} }
export type CreateItemResponse = ItemPublic export type ItemsCreateItemResponse = ItemPublic
export type ReadItemData = { export type ItemsReadItemData = {
id: string id: string
} }
export type ReadItemResponse = ItemPublic export type ItemsReadItemResponse = ItemPublic
export type UpdateItemData = { export type ItemsUpdateItemData = {
id: string id: string
requestBody: ItemUpdate requestBody: ItemUpdate
} }
export type UpdateItemResponse = ItemPublic export type ItemsUpdateItemResponse = ItemPublic
export type DeleteItemData = { export type ItemsDeleteItemData = {
id: string id: string
} }
export type DeleteItemResponse = Message export type ItemsDeleteItemResponse = Message
export type LoginAccessTokenData = { export type LoginLoginAccessTokenData = {
formData: Body_login_login_access_token formData: Body_login_login_access_token
} }
export type LoginAccessTokenResponse = Token export type LoginLoginAccessTokenResponse = Token
export type TestTokenResponse = UserPublic export type LoginTestTokenResponse = UserPublic
export type RecoverPasswordData = { export type LoginRecoverPasswordData = {
email: string email: string
} }
export type RecoverPasswordResponse = Message export type LoginRecoverPasswordResponse = Message
export type ResetPasswordData = { export type LoginResetPasswordData = {
requestBody: NewPassword requestBody: NewPassword
} }
export type ResetPasswordResponse = Message export type LoginResetPasswordResponse = Message
export type RecoverPasswordHtmlContentData = { export type LoginRecoverPasswordHtmlContentData = {
email: string email: string
} }
export type RecoverPasswordHtmlContentResponse = string export type LoginRecoverPasswordHtmlContentResponse = string
export type ReadUsersData = { export type UsersReadUsersData = {
limit?: number limit?: number
skip?: number skip?: number
} }
export type ReadUsersResponse = UsersPublic export type UsersReadUsersResponse = UsersPublic
export type CreateUserData = { export type UsersCreateUserData = {
requestBody: UserCreate requestBody: UserCreate
} }
export type CreateUserResponse = UserPublic export type UsersCreateUserResponse = UserPublic
export type ReadUserMeResponse = UserPublic export type UsersReadUserMeResponse = UserPublic
export type DeleteUserMeResponse = Message export type UsersDeleteUserMeResponse = Message
export type UpdateUserMeData = { export type UsersUpdateUserMeData = {
requestBody: UserUpdateMe requestBody: UserUpdateMe
} }
export type UpdateUserMeResponse = UserPublic export type UsersUpdateUserMeResponse = UserPublic
export type UpdatePasswordMeData = { export type UsersUpdatePasswordMeData = {
requestBody: UpdatePassword requestBody: UpdatePassword
} }
export type UpdatePasswordMeResponse = Message export type UsersUpdatePasswordMeResponse = Message
export type RegisterUserData = { export type UsersRegisterUserData = {
requestBody: UserRegister requestBody: UserRegister
} }
export type RegisterUserResponse = UserPublic export type UsersRegisterUserResponse = UserPublic
export type ReadUserByIdData = { export type UsersReadUserByIdData = {
userId: string userId: string
} }
export type ReadUserByIdResponse = UserPublic export type UsersReadUserByIdResponse = UserPublic
export type UpdateUserData = { export type UsersUpdateUserData = {
requestBody: UserUpdate requestBody: UserUpdate
userId: string userId: string
} }
export type UpdateUserResponse = UserPublic export type UsersUpdateUserResponse = UserPublic
export type DeleteUserData = { export type UsersDeleteUserData = {
userId: string userId: string
} }
export type DeleteUserResponse = Message export type UsersDeleteUserResponse = Message
export type TestEmailData = { export type UtilsTestEmailData = {
emailTo: string emailTo: string
} }
export type TestEmailResponse = Message export type UtilsTestEmailResponse = Message
export type HealthCheckResponse = boolean export type UtilsHealthCheckResponse = boolean

View File

@@ -6,7 +6,6 @@ set -x
cd backend cd backend
python -c "import app.main; import json; print(json.dumps(app.main.app.openapi()))" > ../openapi.json python -c "import app.main; import json; print(json.dumps(app.main.app.openapi()))" > ../openapi.json
cd .. cd ..
node frontend/modify-openapi-operationids.js
mv openapi.json frontend/ mv openapi.json frontend/
cd frontend cd frontend
npm run generate-client npm run generate-client