init static method
dynamic
init({})
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 (_) {}
}