openDB method
Future<DatabaseInfo>
openDB(
- String path, {
- int version = 0,
- OnCreate? onCreate,
- OnUpgrade? onUpgrade,
- String? dbName,
- bool useGRPC = false,
override
Open the Database and returns DatabaseInfo with creation status, version and sqlite version.
Implementation
@override
Future<DatabaseInfo> openDB(
String path, {
int version = 0,
OnCreate? onCreate,
OnUpgrade? onUpgrade,
String? dbName,
bool useGRPC = false,
}) async {
dbName ??= defaultDBName;
bool missingDB = true;
if (path == inMemoryDatabasePath) {
databases.add(db: Sqlite3Database(sqlite3.openInMemory()), name: dbName);
} else {
final File f = File(path);
missingDB = !f.existsSync();
if (missingDB) {
var dir = Directory.fromUri(Uri.directory(path));
if (!dir.parent.existsSync()) {
dir.parent.createSync(recursive: true);
}
}
databases.add(db: Sqlite3Database(sqlite3.open(path)), name: dbName);
if (debugMode) {
// ignore: avoid_print
print("DB location: ${databases.get(dbName)}");
}
}
if (missingDB && onCreate != null) {
await onCreate();
}
int currentVersion = await getVersion(dbName: dbName);
if (onUpgrade != null && version != currentVersion) {
await onUpgrade(currentVersion, version);
}
if (version != currentVersion) {
await setVersion(version, dbName: dbName);
}
return DatabaseInfo(
path: path,
created: missingDB,
version: version,
dbName: dbName,
sqliteVersion: sqlite3.version.toString());
}