DBLoad method

Future<Database> DBLoad()

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,
  );
}