idbImportDatabase function
Copy a database export (lines or map sembast export) to another
return the opened database
Implementation
Future<Database> idbImportDatabase(
Object data,
IdbFactory dstFactory,
String dstDbName,
) async {
// if it is a sembast factory use it!
// if (false) {
if (dstFactory is IdbFactorySembast) {
final sdbDb = await sembast.importDatabaseAny(
data,
dstFactory.sdbFactory,
dstFactory.getDbPath(dstDbName),
);
return dstFactory.openFromSdbDatabase(sdbDb);
} else {
// import to a memory one
var tmpPath = _tempExportPath;
final sdbDb = await sembast.importDatabaseAny(
data,
sembast.databaseFactoryMemory,
tmpPath,
);
final tmpDb = await (idbFactoryMemory as IdbFactorySembast)
.openFromSdbDatabase(sdbDb);
try {
return await copyDatabase(tmpDb, dstFactory, dstDbName);
} finally {
tmpDb.close();
await idbFactoryMemory.deleteDatabase(tmpPath);
}
}
}