createTableIfNeeded method
Implementation
Future<bool?> createTableIfNeeded({Database? db, int? version}) async {
db ??= database;
String? spec = createTableSpecification?.trim();
if (spec == null) return null;
List<String> strings = spec.split(SEPARATOR);
/// get the create table sql
String createTableSql = strings.firstSafe?.trim() ?? '';
if (createTableSql.isEmpty) return null;
if (!createTableSql.startsWith('CREATE TABLE')) {
/// if just columns & columns' type definitions
createTableSql = createTableSql.removeEndWith(',');
createTableSql = 'CREATE TABLE IF NOT EXISTS $tableName ( $createTableSql )';
}
if (strings.length > 1) {
/// with others sql like: 'CREATE UNIQUE INDEX IF NOT EXISTS $indexName ON $tableName ( columnName );'
strings.removeAt(0);
strings.insert(0, createTableSql);
}
for (String sql in strings) {
try {
BoxerLogger.i(null, 'Boxer createTableIfNeeded execute: $sql');
await db.execute(sql);
} catch (e, s) {
BoxerLogger.f(null, 'Boxer createTableIfNeeded error: $e, $s');
BoxerLogger.reportFatal(e, s);
return false;
}
}
return isTableExisted();
}