putSingleGetId<T> method

Future putSingleGetId<T>(
  1. T entity
)

Implementation

Future putSingleGetId<T>(T entity) async {
  if (entity == null) {
    throw IllegalArgumentException('Dblayer@putSingle entity not defined');
  }

  var ormDefinitions = _validateModel(entity);

  var id, query;
  var mainInsertData = ormDefinitions.data;
  // if is Relations
  if (ormDefinitions.isRelations()) {
    var len = ormDefinitions.relations!.length;
    for (var i = 0; i < len; i++) {
      var relation = ormDefinitions.relations![i];

      if (relation.data != null) {
        query = insertGetId(defaultIdColName: relation.localKey)
            .setAll(relation.data)
            .into(relation.tableRelation);
        id = (await query.exec())[0][0];
        mainInsertData![relation.foreignKey] = id;
      }
    }

    query = insertGetId(defaultIdColName: ormDefinitions.primaryKey)
        .setAll(mainInsertData)
        .into(ormDefinitions.tableName);

    id = (await query.exec())[0][0];
  } else {
    var query = insertGetId(defaultIdColName: ormDefinitions.primaryKey)
        .setAll(mainInsertData)
        .into(ormDefinitions.tableName);
    id = (await query.exec())[0][0];
  }

  return id;
}