createDatabase method
Future<void>
createDatabase(
- Database db
)
Implementation
Future<void> createDatabase(Database db) async {
for (var x in DbParameters.tables) {
var classMirror = reflector.reflectType(x) as ClassMirror;
Iterable<String> names =
classMirror.invokeGetter("names") as Iterable<String>;
Map<String, String> campos =
classMirror.invokeGetter("fields") as Map<String, String>;
List<String> primary =
classMirror.invokeGetter("primary") as List<String>;
List<String> foreign =
classMirror.invokeGetter("foreign") as List<String>;
String sql =
'''CREATE TABLE IF NOT EXISTS ${x.toString().toLowerCase()}s (''';
for (var nombre in names) {
sql = '$sql$nombre ${campos[nombre]}, ';
}
sql = '$sql PRIMARY KEY(';
for (var primaryKey in primary) {
if (primaryKey != primary.last) {
sql = '$sql$primaryKey,';
} else {
if (foreign.isNotEmpty) {
sql = '$sql$primaryKey),';
for (var foreignKey in foreign) {
if (foreignKey == foreign.last) {
sql = '$sql$foreignKey';
} else {
sql = '$sql$foreignKey, ';
}
}
} else {
sql = '$sql$primaryKey)';
}
}
}
sql = '$sql);';
await db.execute(sql);
}
}