Skip to content

Commit

Permalink
リファクタリング
Browse files Browse the repository at this point in the history
  • Loading branch information
natade-jp committed May 23, 2021
1 parent cd4b083 commit 47007de
Show file tree
Hide file tree
Showing 50 changed files with 10,214 additions and 820 deletions.
218 changes: 165 additions & 53 deletions build/toolbox-wsh.d.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,75 @@
/**
* データベースのレコードの列データ
* @typedef {Object} SQLite3TypeData
* @property {number} cid 列番号
* @property {string} name 列名
* @property {string} type 型名
* @property {number} size 型のサイズ
* @property {Object} dflt_value 初期値 未設定は(`NULL`)
* @property {boolean} is_not_null `NULL` を許してよいか
* SQL のタイムアウト設定
*/
declare type SQLite3TypeData = {
cid: number;
name: string;
type: string;
size: number;
dflt_value: any;
is_not_null: boolean;
};
declare const SQL_TIME_OUT = ".timeout 1000\n";

/**
* SQL のタイムアウト設定
* WSH で SQLite3 を使用するためのライブラリ
* @requires SenkoWSH
*/
declare const SQL_TIME_OUT = ".timeout 1000\n";
declare class SQLite3 {
/**
* 利用するデータベースをセット
* @param {SFile} db_file DBファイル
* @returns {Object<string, SQLite3IF>} テーブル操作用データ
*/
static use(db_file: SFile): {
[key: string]: SQLite3IF;
};
/**
* SQL文を実行する
* @param {SFile} db_file DBファイル
* @param {string} sql SQL文
* @param {string} [option] 実行時のオプション
* @returns {string | null} SQL実行結果
*/
static execSQL(db_file: SFile, sql: string, option?: string): string | null;
/**
* ツールをインストールする
* - `./lib/sqlite3.exe` を利用する
* - ファイルが存在しない場合は自動でダウンロードする
* - 本ライブラリを使用する場合は、`setSQLite3` でツールを設定するか、`install` でダウンロードする必要がある
*
* @returns {boolean}
*/
static install(): boolean;
/**
* ツールを設定する
* - `*.db` を操作するための `sqlite-tools-win32` に含まれる `sqlite3.exe` を設定する
* @param {SFile|string} sqlite_tool_path
* @returns {boolean}
*/
static setSQLite3(sqlite_tool_path: SFile | string): boolean;
/**
* `*.db` を操作するための `sqlite-tools-win32` に含まれる `sqlite3.exe`
* @type {SFile}
*/
static sqlite3: SFile;
}

/**
* データベースの操作用インタフェース
* @param {SFile} db_file DBファイル
* @param {string} table_name テーブル名
* @param {SQLite3Schema} schema テーブル情報
* @requires SQLite3Schema
* @requires SenkoWSH
*/
declare class SQLite3IF {
constructor(db_file: SFile, table_name: string, schema: SQLite3Schema);
/**
* 操作対象のDBファイル
*/
db_file: any;
/**
* 操作対象のテーブル名
*/
table_name: any;
/**
* 操作対象のテーブル情報
*/
schema: any;
/**
* 型情報を取得する
* @return {Object<string, SQLite3TypeData>}
*/
getTypes(): {
[key: string]: SQLite3TypeData;
};
getTypes(): any;
/**
* SQL文を作成する
*
Expand Down Expand Up @@ -69,48 +102,127 @@ declare class SQLite3IF {
}): any;
}

declare namespace SQLite3IF {
/**
* データベースの操作用インタフェース
* @param {SFile} db_file DBファイル
* @param {string} table_name テーブル名
* @param {SQLite3Schema} schema テーブル情報
*/
class SQLite3IF {
constructor(db_file: SFile, table_name: string, schema: SQLite3Schema);
}
}

/**
* WSH で SQLite3 を使用するためのライブラリ
* データベースのテーブルの構造
* @requires SQLite3Type
* @requires SenkoWSH
*/
declare class SQLite3 {
declare class SQLite3Schema {
/**
* 利用するデータベースをセット
* @param {SFile} db_file DBファイル
* @returns {Object<string, SQLite3IF>} テーブル操作用データ
* 列名とその列に対応する型情報
*/
static use(db_file: SFile): {
[key: string]: SQLite3IF;
};
types: any;
/**
* SQL文を実行する
* @param {SFile} db_file DBファイル
* @param {string} sql SQL文
* @param {string} [option] 実行時のオプション
* @returns {string | null} SQL実行結果
* `SQLite3Schema` を作成する
* `-json` で `pragma table_info(x);` で取得したレコードデータを引数に取る
*
* @param {string} table_info_text
*/
static execSQL(db_file: SFile, sql: string, option?: string): string | null;
static create(table_info_text: string): void;
/**
* ツールをインストールする
* - `./lib/sqlite3.exe` を利用する
* - ファイルが存在しない場合は自動でダウンロードする
* - 本ライブラリを使用する場合は、`setSQLite3` でツールを設定するか、`install` でダウンロードする必要がある
* 型情報を取得する
* @return {Object<string, SQLite3TypeData>}
*/
getTypes(): any;
/**
* 型情報を用いてSQLiteから取得したデータを整形する
* @param {string} sqlite_output_text
* @returns {Object<string, any>[]}
*/
normalizeSQLData(sqlite_output_text: string): any;
/**
* where文を作成する
* @param {Object<string, any>} where_obj
* @returns {string}
*/
createWhereSQL(where_obj: {
[key: string]: any;
}): string;
/**
* select文の対象を作成する
* @param {Object<string, any>} select_column_obj
* @returns {string}
*/
createSelectColumnSQL(select_column_obj: {
[key: string]: any;
}): string;
}

/**
* データベースのレコードの列情報
* @typedef {Object} SQLite3TypeData
* @property {number} cid 列番号
* @property {string} name 列名
* @property {string} type 型名
* @property {number} size 型のサイズ
* @property {Object} dflt_value 初期値 未設定は(`NULL`)
* @property {boolean} is_not_null `NULL` を許してよいか
*/
declare type SQLite3TypeData = {
cid: number;
name: string;
type: string;
size: number;
dflt_value: any;
is_not_null: boolean;
};

/**
* データベース内のテーブルの列情報
* @requires SenkoWSH
*/
declare class SQLite3Type {
/**
* 列情報
*/
info: any;
/**
* 正規化した型名
*/
normalized_type: any;
/**
* `SQLite3Type` を作成する
* `-json` で `pragma table_info(x);` で取得した1レコードデータを引数に取る
*
* @returns {boolean}
* @param {SQLite3TableInfo} table_info_record
*/
static install(): boolean;
static create(table_info_record: any): void;
/**
* ツールを設定する
* - `*.db` を操作するための `sqlite-tools-win32` に含まれる `sqlite3.exe` を設定する
* @param {SFile|string} sqlite_tool_path
* @returns {boolean}
* 型情報を取得する
*
* @returns {SQLite3TypeData}
*/
static setSQLite3(sqlite_tool_path: SFile | string): boolean;
getType(): SQLite3TypeData;
/**
* `*.db` を操作するための `sqlite-tools-win32` に含まれる `sqlite3.exe`
* @type {SFile}
* JavaScript用のデータをSQL文で使用できる文字列へ変換
* - `SQL` の型情報を元に `SQL` 内への記載用データへ変換
* - 文字列データはシングルクォーテーションを付けた文字列を返す
* - 数値データなどはシングルクォーテーション無しの文字列型を返す
*
* @param {any} x
* @returns {string}
*/
static sqlite3: SFile;
toSQLDataFromJSData(x: any): string;
/**
* SQLで取得したデータをJavaScript用のデータへ変換
* - 「`-json` で取得し `eval` で変換したデータ」から `SQL` の型情報を元に `JavaScript` の型へ変換
*
* @param {any} x
* @returns {any}
*/
toJSDataFromSQLData(x: any): any;
}

/**
Expand Down
Binary file modified build/toolbox-wsh.js
Binary file not shown.
17 changes: 17 additions & 0 deletions docs/badge.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 47007de

Please sign in to comment.