updateSchemaIfNeeded method

Future<void> updateSchemaIfNeeded(
  1. DbContext dbc
)

Implementation

Future<void> updateSchemaIfNeeded(DbContext dbc) async {
  //fields
  _meta_name = stringColumn("name", 150);
  _meta_value = intColumn("value", allowNull: true);
  _meta_text = stringColumn("text", 150, allowNull: true);

  //table
  _tbl_meta = this.newTable("ds_meta", [_meta_name, _meta_value, _meta_text]);

  //this.startTransaction();
  //create if not exists

  await dbc.executeTransaction((transactionContext) async {
    await transactionContext.create(_tbl_meta);
    int ver = await currentVersion(transactionContext);
    if (ver == -1) {
      // insert version row
      await this
          .InsertInto(_tbl_meta)
          .Values([_meta_name.Assign("schema version"), _meta_value.Assign(0)])
          .execute(transactionContext);
      //
      ver = 0;
    }
    //
    if (ver < _schemaUpdates.length) {
      for (int i = ver; i < _schemaUpdates.length; i++) {
        await _schemaUpdates[i].apply(transactionContext);
      }
      await _setSchemaVersion(transactionContext, _schemaUpdates.length);
    }
  });

  //commit
  //this.submitChanges();
}