@gftdcojp/ksqldb-orm
Version:
ksqldb-orm - Server-Side TypeScript ORM for ksqlDB with enterprise security extensions
109 lines • 4.09 kB
TypeScript
/**
* 列名変換ユーティリティ
*
* KsqlDBの列名が強制的に大文字になることに対応するため、
* TypeScript側のキャメルケースやスネークケースの列名を
* 適切に変換するユーティリティ関数
*/
export type ColumnNameTransformStrategy = 'uppercase' | 'lowercase' | 'camelCase' | 'snake_case' | 'none';
/**
* カスタム列名変換関数の型定義
*/
export type ColumnNameTransformFunction = (columnName: string) => string;
/**
* 列名変換設定
*/
export interface ColumnNameTransformConfig {
/** 事前定義された変換戦略 */
strategy?: ColumnNameTransformStrategy;
/** カスタム変換関数 */
customTransform?: ColumnNameTransformFunction;
/** 特定の列名のマッピング辞書 */
columnMappings?: Record<string, string>;
/** バックワード互換性のために既存の大文字列名を保持するか */
preserveExistingUppercase?: boolean;
}
/**
* 文字列をキャメルケースに変換
* 例: user_id → userId, USER_NAME → userName, USERID → userId
*/
export declare function toCamelCase(str: string): string;
/**
* 文字列をスネークケースに変換
* 例: userId → user_id, UserName → user_name
*/
export declare function toSnakeCase(str: string): string;
/**
* 文字列を大文字に変換
* 例: userId → USERID, user_id → USER_ID
*/
export declare function toUpperCase(str: string): string;
/**
* 文字列を小文字に変換
* 例: USERID → userid, USER_ID → user_id
*/
export declare function toLowerCase(str: string): string;
/**
* KsqlDB用列名変換(クエリ送信時)
* TypeScriptコードで使用する列名をKsqlDBで使用する列名に変換
*/
export declare function transformColumnNameForKsqlDb(columnName: string, config?: ColumnNameTransformConfig): string;
/**
* KsqlDBからのレスポンス列名変換(レスポンス受信時)
* KsqlDBから受け取った列名をTypeScriptで使いやすい形式に変換
*/
export declare function transformColumnNameFromKsqlDb(columnName: string, config?: ColumnNameTransformConfig): string;
/**
* 複数の列名を一括変換(KsqlDB送信用)
*/
export declare function transformColumnNamesForKsqlDb(columnNames: string[], config?: ColumnNameTransformConfig): string[];
/**
* 複数の列名を一括変換(KsqlDBレスポンス用)
*/
export declare function transformColumnNamesFromKsqlDb(columnNames: string[], config?: ColumnNameTransformConfig): string[];
/**
* オブジェクトのキーを変換(KsqlDB送信用)
*/
export declare function transformObjectKeysForKsqlDb<T extends Record<string, any>>(obj: T, config?: ColumnNameTransformConfig): Record<string, any>;
/**
* オブジェクトのキーを変換(KsqlDBレスポンス用)
*/
export declare function transformObjectKeysFromKsqlDb<T extends Record<string, any>>(obj: T, config?: ColumnNameTransformConfig): Record<string, any>;
/**
* 一般的な列名マッピングパターン
*/
export declare const COMMON_COLUMN_MAPPINGS: {
/** TypeScript camelCase → KsqlDB UPPERCASE マッピング */
CAMEL_TO_UPPER: {
userId: string;
userName: string;
userEmail: string;
accountId: string;
createdAt: string;
updatedAt: string;
isActive: string;
firstName: string;
lastName: string;
phoneNumber: string;
emailAddress: string;
};
/** snake_case → KsqlDB UPPERCASE マッピング */
SNAKE_TO_UPPER: {
user_id: string;
user_name: string;
user_email: string;
account_id: string;
created_at: string;
updated_at: string;
is_active: string;
first_name: string;
last_name: string;
phone_number: string;
email_address: string;
};
};
/**
* 事前定義された設定パターン
*/
export declare const PRESET_COLUMN_TRANSFORM_CONFIGS: Record<string, ColumnNameTransformConfig>;
//# sourceMappingURL=column-name-transform.d.ts.map