SQLからTypeScriptインターフェースへの変換
対応するPostgreSQL CREATE TABLE定義を、null許容を明示したTypeScript行インターフェースに変換します。数値の正確な表現も保持します。
仕組み
PostgreSQLのCREATE TABLE文を1つ以上貼り付けます。任意のIF NOT EXISTS、スキーマ名、引用識別子、組み込み型、精度、既定値、null制約、主キー、一般的な制約に対応します。
各テーブルの生成インターフェースを確認します。null許容カラムも必須プロパティのままで、値の型は`| null`です。JSDoc設定は整形した既定値と主キーの注記を追加します。
出力をクエリの形やドライバー設定と照らし合わせます。一部のカラムだけを選ぶクエリは、ここで表す完全なテーブル行とは異なる形です。
出力をアプリケーション型の出発点として使います。実行時検証を加え、プロジェクトでドライバー固有の表現を調整してください。
手順
- 対応するPostgreSQLテーブル定義を貼り付ける
- 生成された行プロパティと値型を確認する
- クエリとドライバーの表現を確認する
具体例
入力例: 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スキーマと実行時検証のレイヤーを組み合わせてください。