DBLoad method
DBLoad Function For Load Db
DBLoad Function will generate the database doesn't exisit
var db = commands.DBLoad();
Implementation
Future<Database> DBLoad() async {
return openDatabase(
join(await getDatabasesPath(), "${sqliteData.databaseName}.db"),
onCreate: (db, version) async {
if (sqliteData.enableLog && sqliteData.enableSaveLogs) {
await db.execute(
"CREATE TABLE EFLogs (id TEXT PRIMARY KEY ,title TEXT , date_log TEXT)");
}
await EFPrinter.printing(
db, "Creating Database ${sqliteData.databaseName}", sqliteData);
for (var table in sqliteData.tables) {
await db.execute(
"CREATE TABLE ${table.tableName} (${table.primaryKeyName} ${table.primrayKeyType == PrimaryKeyEnum.Text ? "TEXT" : "INTEGER"} PRIMARY KEY, ${GetProperties(table)})");
await EFPrinter.printing(
db, "Created Table ${table.tableName}", sqliteData);
for (var property
in table.properties!.where((element) => element.isIndexed)) {
int num = Random().nextInt(2000);
await db.execute(
"CREATE INDEX ${property.name.toUpperCase()}_${table.tableName}_IX ON ${table.tableName}(${property.name})");
await EFPrinter.printing(
db,
"Created Index ${property.name.toUpperCase()}_${table.tableName}_IX For Table ${table.tableName} Property ${property.name}",
sqliteData);
}
int counter = 0;
if (table.defaultValues != null) {
for (var element in table.defaultValues!) {
counter++;
var id = counter;
var map = table.ToMap(element);
map[table.primaryKeyName] = id;
await db.insert(table.tableName, map);
}
await EFPrinter.printing(
db,
"Created Default Data For Table ${table.tableName} Successfully Length : ${table.defaultValues!.length}",
sqliteData);
}
}
await db.execute(
"CREATE TABLE EFTables (id TEXT PRIMARY KEY ,tableName TEXT)");
for (var table in sqliteData.tables) {
await db.insert("EFTables", {"id": "ID-${table.tableName}"});
}
await EFPrinter.printing(
db,
"Created Database ${sqliteData.databaseName} Successfully",
sqliteData);
},
version: sqliteData.version,
);
}