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() に依存します。