idbImportDatabase function

Future<Database> idbImportDatabase(
  1. Object data,
  2. IdbFactory dstFactory,
  3. String dstDbName
)

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