portfolios.tools

SQLからTypeScriptインターフェースへの変換

対応するPostgreSQL CREATE TABLE定義を、null許容を明示したTypeScript行インターフェースに変換します。数値の正確な表現も保持します。

SQL入力

100,000文字以内のCREATE TABLE文を貼り付けてください。未対応のSQLはエラーになり、部分的な結果を完全なものと誤認しません。

生成結果

変換したテーブル数: 1

export interface FinancePositions {
  /** Primary key */
  "id": string;
  "ticker": string;
  "shares": string;
  /** Default expression: 'created, reviewed' */
  "note": string | null;
  "metadata": unknown | null;
}

仕組み

PostgreSQLのCREATE TABLE文を1つ以上貼り付けます。任意のIF NOT EXISTS、スキーマ名、引用識別子、組み込み型、精度、既定値、null制約、主キー、一般的な制約に対応します。

各テーブルの生成インターフェースを確認します。null許容カラムも必須プロパティのままで、値の型は`| null`です。JSDoc設定は整形した既定値と主キーの注記を追加します。

出力をクエリの形やドライバー設定と照らし合わせます。一部のカラムだけを選ぶクエリは、ここで表す完全なテーブル行とは異なる形です。

出力をアプリケーション型の出発点として使います。実行時検証を加え、プロジェクトでドライバー固有の表現を調整してください。

手順

  1. 対応するPostgreSQLテーブル定義を貼り付ける
  2. 生成された行プロパティと値型を確認する
  3. クエリとドライバーの表現を確認する

具体例

入力例: CREATE TABLE finance.positions (id bigint PRIMARY KEY, ticker varchar(12) NOT NULL, shares numeric(12, 4) NOT NULL, note text DEFAULT 'created, reviewed', metadata jsonb);

生成される行型では、idとtickerは必須の文字列、sharesは必須の文字列、noteはnullを含む必須の文字列、metadataはnullを含む必須のunknown値です。bigintとnumericは、JavaScriptの数値が正確なデータを保持できると仮定しないよう文字列で表します。

この変換ツールを使う場面

このツールで対応するPostgreSQLテーブル定義を完全な行用のTypeScript型に変換できます。null値と存在しないプロパティを区別します。

アプリケーションで使う前に、ドライバーとクエリ結果に合わせて型の変換を確認してください。

よくある誤り

null許容カラムを任意プロパティとして扱わないでください。取得した行にはカラムが含まれ、その値がnullの場合があります。

ドライバーがnumericとbigintを文字列で返すと仮定しないでください。生成インターフェースに合うように設定または変換してください。

解析と型の規則

対応する各テーブルについて、括弧の外側や引用値の外側にあるカンマで定義を分割します。各カラムのSQL型をTypeScript型に変換します。必須プロパティを出力し、カラムがnullを許容する場合は`| null`を加えます。主キーカラムはnullを許容しません。既定値は説明としてのみ出力します。

このツールはPostgreSQL CREATE TABLEの一部から行インターフェースを生成します。正確なnumericとbigint値は文字列で表すため、アプリケーション側でドライバーを設定するか結果を変換する必要があります。不明なSQL型はunknownになります。JSONとJSONBもunknownになります。

対応範囲と制限

このパーサーはPostgreSQL CREATE TABLEの一部に対応し、SQL全体には対応しません。基本的な定義、スキーマ名と引用名、入れ子の式、一般的な制約、既定値、主キーを扱います。未対応の文やオプションでは部分的なインターフェースを出さずエラーを返します。ALTER TABLE、ビュー、CREATE TABLE AS、パーティション、継承、PostgreSQL文法のすべてには対応しません。numericとbigintは文字列で出力するため、ドライバー設定または変換が必要です。日付は文字列です。不明な型はunknownになります。プロパティは完全な行を表し、任意の挿入項目や一部のカラムだけのクエリ結果は表しません。生成型は実行時データを検証しません。入力は100,000文字までです。

用語

行インターフェース
データベース行インターフェースは、null値を含む完全な行のプロパティを表します。
null許容カラム
null許容カラムはnullを許可します。完全な行でプロパティが存在しないという意味ではありません。
主キー
主キーは行を一意に識別し、PostgreSQLではそのカラムにnullを含められません。

関連する作業

対応するPostgreSQLのテーブル定義をTypeScriptの行型に変換します。HTTPリクエストとレスポンスを記述する場合は、別のAPIスキーマツールを使用してください。

この変換ツールはデータベース行の形を扱います。実行時の検証コードやデータベースアクセス関数は生成しません。

よくある質問

どのSQL文を読み取れますか?

パーサーは対応するCREATE TABLE文を読み、カラムと制約の定義を最上位の区切りだけで分割します。型の精度、入れ子の式、引用符で囲まれた既定値に含まれるカンマは分割しません。カラム名、型、null許容、既定値、主キーを使ってテーブルごとにインターフェースを作成します。

null許容カラムと主キーはどう表されますか?

nullを許容するカラムも選択した行に含まれるため、プロパティは必須で、値の型にnullが含まれます。NOT NULLカラムと主キーにはnullが含まれません。既定値は挿入時に使われるもので、取得した行にプロパティが存在するかどうかを変えません。

SQL型はTypeScriptでどう表現されますか?

小さな整数型と浮動小数点型はnumberに変換します。bigint、numeric、decimal、moneyは正確な値を保つためstringに変換します。データベースドライバーがこれらを文字列として返すよう設定するか、生成型を使う前に変換してください。JSONとJSONBは、JSONがスカラー、配列、オブジェクト、nullを含められるためunknownに変換します。日付と時刻の型はstringに変換します。

対応範囲外の構文は何ですか?

このパーサーは、任意のIF NOT EXISTS、スキーマ名、引用識別子、カラム定義、一般的な制約、既定値、主キーを含むPostgreSQL CREATE TABLEの一部を扱います。対応しない後置オプションや別の文は、部分的な結果を返さずエラーにします。ALTER TABLE、ビュー、CREATE TABLE AS、パーティション、継承、PostgreSQLのすべての型や制約形式には対応しません。

JSDoc設定では何が追加されますか?

JSDocを有効にすると、カラムの既定値と主キー状態の安全な要約を追加します。改行を平坦化し、コメント終端を無害化するため、SQL入力で生成コメントを閉じることはできません。この設定はドキュメントだけを変え、TypeScriptのプロパティ型は変えません。

関連ツール

アプリケーションで必要な場合は、データベース行インターフェースにAPIスキーマと実行時検証のレイヤーを組み合わせてください。