getNextId method
Implementation
Future<int> getNextId(WardenType wardenType) async {
if (Warden.isClient(wardenType)) {
return await _getNextIdForUser();
} else {
int? nextId = null;
nextId = await _getHoleFreeMaxIndex();
if (nextId == null) {
String sql = " SELECT " +
getIndex +
"-1 AS NEXT_ID " +
" FROM " +
tableName +
" t1 " +
" WHERE NOT EXISTS " +
" (SELECT * " +
" FROM " +
tableName +
" t2 " +
" WHERE t1." +
getIndex +
" -1 = t2." +
getIndex +
" ) " +
" AND " +
getIndex +
">1 " +
" ORDER BY " +
getIndex +
" DESC";
RawTableData rawTableData;
try {
rawTableData = await transaction
.getConnection()
.query(sql, FieldData.wee(table_id));
} on SqlException catch (e) {
throw SqlException(e.sqlExceptionEnum,
cause: e.cause,
sql: sql,
json: "{ tableName:'$tableName', index:'$getIndex' }");
}
try {
nextId = rawTableData.getRawField(0, 0) as int;
} on RangeError {}
if (nextId == null) nextId = 1;
}
return nextId;
}
}