From d4c9c1e7cdd6bc1113296cb220832d3ce1cd2332 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Tue, 30 Jul 2024 18:59:29 +0300 Subject: [PATCH] docs-util: fix how data model name is inferred (#8351) --- .../docs-generator/src/classes/generators/dml.ts | 2 +- .../packages/docs-generator/src/classes/kinds/dml.ts | 12 ++++++++++-- www/utils/packages/utils/src/str-formatting.ts | 8 ++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/www/utils/packages/docs-generator/src/classes/generators/dml.ts b/www/utils/packages/docs-generator/src/classes/generators/dml.ts index cd171fe6fb..06c4f6a131 100644 --- a/www/utils/packages/docs-generator/src/classes/generators/dml.ts +++ b/www/utils/packages/docs-generator/src/classes/generators/dml.ts @@ -61,7 +61,7 @@ class DmlGenerator extends AbstractGenerator { ) this.generatorEventManager.emit(GeneratorEvent.FINISHED_GENERATE_EVENT) - console.log(`[OAS] Finished generating OAS for ${file.fileName}.`) + console.log(`[DML] Finished generating OAS for ${file.fileName}.`) }) ) } diff --git a/www/utils/packages/docs-generator/src/classes/kinds/dml.ts b/www/utils/packages/docs-generator/src/classes/kinds/dml.ts index 104a9381bb..471940392c 100644 --- a/www/utils/packages/docs-generator/src/classes/kinds/dml.ts +++ b/www/utils/packages/docs-generator/src/classes/kinds/dml.ts @@ -3,7 +3,13 @@ import DefaultKindGenerator, { GetDocBlockOptions } from "./default.js" import getBasePath from "../../utils/get-base-path.js" import { getDmlOutputBasePath } from "../../utils/get-output-base-paths.js" import path from "path" -import { camelToWords, RELATION_NAMES, snakeToPascal } from "utils" +import { + camelToWords, + RELATION_NAMES, + snakeToPascal, + camelToPascal, + isSnakeCase, +} from "utils" import toJsonFormatted from "../../utils/to-json-formatted.js" import { DmlFile, DmlObject } from "types" @@ -186,7 +192,9 @@ class DmlKindGenerator extends DefaultKindGenerator { } } - return snakeToPascal(name.replace(/^"/, "").replace(/"$/, "")) + name = name.replace(/^"/, "").replace(/"$/, "") + + return isSnakeCase(name) ? snakeToPascal(name) : camelToPascal(name) } /** diff --git a/www/utils/packages/utils/src/str-formatting.ts b/www/utils/packages/utils/src/str-formatting.ts index 870f96afff..849911588a 100644 --- a/www/utils/packages/utils/src/str-formatting.ts +++ b/www/utils/packages/utils/src/str-formatting.ts @@ -28,6 +28,10 @@ export function camelToTitle(str: string): string { .trim() } +export function camelToPascal(str: string): string { + return `${str.charAt(0).toUpperCase()}${str.substring(1)}` +} + export function snakeToWords(str: string): string { return str.replaceAll("_", " ").toLowerCase() } @@ -39,6 +43,10 @@ export function snakeToPascal(str: string): string { .join("") } +export function isSnakeCase(str: string): boolean { + return /[a-z]+_[a-z]+/g.test(str) +} + export function kebabToTitle(str: string): string { return str .split("-")