API リファレンス
このドキュメントでは、SQL Prettify ツールの機能と実装に関する技術的な詳細を説明します。
ツール設定
フォーマットオプション
このツールは以下の設定オプションを受け付けます。
interface FormattingOptions {
indentSize: number; // 2, 4, or 8 spaces
keywordCase: "upper" | "lower" | "preserve";
uppercaseKeywords: boolean;
uppercaseFunctions: boolean;
uppercaseDataTypes: boolean;
alignCommas: boolean;
breakBeforeBooleanOperator: boolean;
}
デフォルト設定
const defaultOptions: FormattingOptions = {
indentSize: 2,
keywordCase: "upper",
uppercaseKeywords: true,
uppercaseFunctions: true,
uppercaseDataTypes: true,
alignCommas: false,
breakBeforeBooleanOperator: true,
};
サポートされる SQL キーワード
データ操作言語(DML)
- SELECT: テーブルからデータを取得します
- INSERT: 新しいレコードを挿入します
- UPDATE: 既存のレコードを更新します
- DELETE: レコードを削除します
データ定義言語(DDL)
- CREATE: データベースオブジェクトを作成します
- ALTER: データベースオブジェクトを変更します
- DROP: データベースオブジェクトを削除します
- TRUNCATE: テーブル内の全レコードを削除します
データ制御言語(DCL)
- GRANT: 権限を付与します
- REVOKE: 権限を取り消します
トランザクション制御
- COMMIT: トランザクションの変更を保存します
- ROLLBACK: トランザクションの変更を取り消します
- SAVEPOINT: セーブポイントを作成します
サポートされる SQL 関数
集計関数
- COUNT: 行数または NULL 以外の値を数えます
- SUM: 値の合計を計算します
- AVG: 平均値を計算します
- MIN: 最小値を取得します
- MAX: 最大値を取得します
文字列関数
- UPPER: 大文字に変換します
- LOWER: 小文字に変換します
- LENGTH: 文字列の長さを取得します
- SUBSTRING: 部分文字列を抽出します
- CONCAT: 文字列を連結します
- TRIM: 前後の空白を削除します
日付/時刻関数
- NOW: 現在のタイムスタンプを取得します
- DATE: 日付部分を抽出します
- TIME: 時刻部分を抽出します
- YEAR: 年を抽出します
- MONTH: 月を抽出します
- DAY: 日を抽出します
数学関数
- ROUND: 指定した小数桁で丸めます
- FLOOR: 切り捨てます
- CEIL: 切り上げます
- ABS: 絶対値を取得します
- SQRT: 平方根を計算します
- POWER: べき乗を計算します
サポートされるデータ型
数値型
- INT: 整数値
- INTEGER: 整数値
- BIGINT: 大きな整数値
- SMALLINT: 小さな整数値
- TINYINT: 非常に小さな整数値
- DECIMAL: 固定小数点数
- NUMERIC: 固定小数点数
- FLOAT: 浮動小数点数
- DOUBLE: 倍精度浮動小数点数
- REAL: 単精度浮動小数点数
文字列型
- CHAR: 固定長文字列
- VARCHAR: 可変長文字列
- TEXT: 大きなテキストデータ
- BLOB: バイナリ大容量オブジェクト
日付/時刻型
- DATE: 日付値
- TIME: 時刻値
- DATETIME: 日付と時刻の値
- TIMESTAMP: タイムスタンプ値
その他の型
- BOOLEAN: 真偽値
- BIT: ビット値
- JSON: JSON データ
フォーマットルール
インデントルール
- SELECT 句: 各列を改行し、インデントして配置します
- FROM 句: テーブル名を適切にインデントします
- JOIN 句: JOIN 条件を適切にインデントします
- WHERE 句: 条件を適切にインデントします
- GROUP BY: グループ化する列をインデントします
- ORDER BY: 並べ替え列をインデントします
大文字・小文字変換ルール
- キーワード: 指定した大文字・小文字(upper/lower/preserve)に変換します
- 関数: 関数名を指定した大文字・小文字に変換します
- データ型: データ型名を指定した大文字・小文字に変換します
- 識別子: テーブル名や列名は元の大文字・小文字を保持します
改行ルール
- 主要な句: SELECT、FROM、WHERE、GROUP BY、ORDER BY の前で改行します
- JOIN 句: 各 JOIN 種類の前で改行します
- 論理演算子: 有効時は AND/OR の前で改行します
- カンマ整列: 有効時は SELECT リスト内のカンマを整列します
履歴管理
履歴レコード構造
interface HistoryRecord {
id: string;
input: string;
output: string;
options: FormattingOptions;
timestamp: number;
}
履歴操作
- レコード追加: 新しい整形履歴を自動的に追加します
- レコード削除: 特定の履歴項目を削除します
- 履歴をクリア: すべての履歴を削除します
- レコード読み込み: 履歴から SQL と設定を復元します
保存制限
- 最大レコード数: 50 件
- 保存場所: ブラウザのローカルストレージ
- 永続性: データはブラウザセッションをまたいで保持されます
エラー処理
よくあるエラー
- 無効な SQL 構文: SQL クエリが不正な形式です
- 未対応の構文: フォーマッタが対応していない SQL 機能です
- 大きすぎるクエリ: 処理制限を超えるクエリです
- ブラウザの制限: ローカルストレージやメモリの制約です
エラー回復
- 構文検証: 基本的な SQL 構文を確認します
- 段階的な劣化処理: 複雑なクエリには部分的な整形を行います
- ユーザーフィードバック: 明確なエラーメッセージと提案を表示します
- 代替手段: 代替の整形方法を提供します
パフォーマンスに関する考慮事項
処理制限
- クエリサイズ: 最大 10,000 文字のクエリを処理できます
- 複雑さ: 最大 10 レベルのネストクエリをサポートします
- 処理時間: 通常 100ms 未満で処理します
最適化機能
- 増分処理: 変更された部分のみを処理します
- キャッシュ: 繰り返し操作の整形結果をキャッシュします
- 遅延読み込み: 必要に応じて履歴を読み込みます
ブラウザ互換性
サポート対象ブラウザ
- Chrome: バージョン 80+
- Firefox: バージョン 75+
- Safari: バージョン 13+
- Edge: バージョン 80+
必要な機能
- ES6 サポート: アロー関数、テンプレートリテラル
- Local Storage: ブラウザのローカルストレージ API
- Clipboard API: モダンなクリップボードアクセス
- CSS Grid: レイアウトサポート
統合
埋め込みオプション
このツールは他のアプリケーションにも統合できます。
- Iframe 埋め込み: iframe として埋め込みます
- API 統合: フォーマット関数を直接利用します
- コンポーネント統合: Vue コンポーネントとして組み込みます
カスタマイズ
- テーマ対応: ライトテーマとダークテーマ
- 言語対応: 複数言語オプション
- カスタムスタイル: CSS によるカスタマイズに対応