AlierDB: createDatabase()
与えられたデータベース定義からデータベースを作成します。
この関数は非同期関数です。
構文
alierDb.createDatabase(schema, ifNotExists) => Promise<object>
引数
-
schema:object|Promise<object>データベースの定義を表すオブジェクトまたはそれを与える
Promiseです。 データベース定義オブジェクトは以下のプロパティを持ちます。-
tables:Array<object>データベースのテーブル定義を表すオブジェクトの配列です。 各オブジェクトは以下のプロパティを持ちます。
-
name:stringテーブル名です。
-
primaryKey:string[] | string|undefined(省略可)主キーとするカラム名のリストです。
カラム名の配列、またはカンマ区切り文字列を指定します。
-
columns:objectカラムの定義をプロパティとして持つオブジェクトです。
各カラム定義は文字列またはオブジェクトで表します。
カラム定義部が文字列の場合、それはカラムのデータ型を表す文字列と見なされます。
カラム定義部がオブジェクトの場合、以下のプロパティを持ちます。
-
type:stringカラムのデータ型です。
-
unique:boolean|undefined(省略可)UNIQUE制約を持つかどうかです。trueならUNIQUE制約を持ちます。このプロパティの指定は任意です。指定がない場合、
UNIQUE制約を持ちません(false)。 -
nullable:boolean|undefined(省略可)NOT NULL制約を持たないかどうかです。falseならNOT NULL制約を持ちます。このプロパティの指定は任意です。指定がない場合、
NOT NULL制約を持ちません(true)。 -
defaultValue:string|number|undefined(省略可)レコード追加時の欠損を埋める既定値です。
このプロパティの指定は任意です。指定がない場合、欠損は
NULLで埋められます。 -
foreignKey:object|undefined(省略可)外部キー制約を表す、以下のプロパティを持つオブジェクトです。
-
table:string参照先のテーブル名です。
-
to:string参照先のカラム名です。
-
onUpdate:string|undefined(省略可)ON UPDATEに指定するアクションです。以下の値を指定できます。
"set-null""set-default""cascade""restrict""no-action"
このプロパティの指定は任意です。指定がない場合、
"no-action"が使われます。 -
onDelete:string|undefined(省略可)ON DELETEに指定するアクションです。指定可能な値および既定値は
onUpdateと同様です。
-
-
-
-
-
ifNotExists:boolean(省略可)CREATE TABLEの際にIF NOT EXISTSを加えるかどうかを表します。trueならIF NOT EXISTSを加えます。この引数の指定は任意です。指定がない場合、
IF NOT EXISTSが指定されます(true)。
返値: Promise<object>
データベース作成に成功したかどうかを表すオブジェクトを与える Promise です。
成功時には、結果のオブジェクトは以下のプロパティを持ちます:
-
status:true成功したかどうかを表す
booleanです。常にtrueを取ります。
失敗時には、結果のオブジェクトは以下のプロパティを持ちます:
-
status:false成功したかどうかを表す
booleanです。常にfalseを取ります。 -
message:string|undefinedエラーメッセージです。エラーの詳細が分かっている場合にのみ定義されます。
例外
TypeError- 引数
schemaがデータベース定義オブジェクトを与えなかった場合 - 引数
schemaにテーブル定義が含まれていなかった場合 - 引数
schemaのテーブル定義部(tables)が配列でなかった場合
- 引数
解説
与えられたデータベース定義からデータベースを作成します。
この関数は対象の AlierDB のプロパティ schema を更新します。
プロパティ schema は、この関数の返す Promise が履行されるまで、
データベース作成後のテーブル定義を与えるオブジェクトを与える Promise に置き換えられます。
またこの関数の返す Promise が履行された後は、作成済みのデータベースの定義オブジェクトに置き換えられます。
この関数の実装は DBConnector.createTable() に依存します。