init static method

dynamic init({
  1. String? dbName,
  2. String? customPath,
  3. required List<String> tables,
  4. required List<TableDatabase> rawTables,
})

Implementation

static init({
  String? dbName,
  String? customPath,
  required List<String> tables,
  required List<TableDatabase> rawTables,
}) async {
  final databasesPath = customPath ?? (Platform.isIOS ? '' : await getDatabasesPath()) + '/';
  path = databasesPath + (dbName ?? 'sql_query') + '.db';
  database = await openDatabase(path, version: 1, onCreate: (Database db, int version) async {}, onConfigure: (Database db) async {
    realPath = db.path;
    await db.execute('PRAGMA foreign_keys = ON');
  });

  await database!.transaction((txn) async {
    await txn.rawQuery('DROP TABLE IF EXISTS _sql_query_tables');
    await txn.rawQuery('DROP TABLE IF EXISTS _sql_query_foreign_key');
    final list = await txn.rawQuery('SELECT * FROM sqlite_master');
    for (var i in tables) {
      final lists = list.where((element) => element['sql'].toString().contains(i.split('(').first));
      if (lists.isEmpty) {
        try {
          await txn.execute(i);
        } catch (_) {}
      }
    }
  });

  DB.table('_sql_query_tables').listData(DB.listTableQuery!).insert();
  DB.table('_sql_query_foreign_key').listData(DB.listForeignKeyQuery!).insert();

  try {
    size = File(realPath).lengthSync();
  } catch (_) {}
}