Implementation
static Future<FMTCRegistry> initialise({
required Directory directory,
required int databaseMaxSize,
required CompactCondition? databaseCompactCondition,
}) async =>
instance = FMTCRegistry._(
directory: directory,
recoveryDatabase: await Isar.open(
[DbRecoverableRegionSchema],
name: '.recovery',
directory: directory.absolute.path,
maxSizeMiB: databaseMaxSize,
compactOnLaunch: databaseCompactCondition,
),
storeDatabases: Map.fromEntries(
await Future.wait(
await directory
.list()
.where(
(e) =>
e is File &&
!path.basename(e.path).startsWith('.') &&
!path.basename(e.path).endsWith('-lck'),
)
.map((f) async {
final id = path.basenameWithoutExtension(f.path);
return MapEntry(
int.parse(id),
await Isar.open(
[DbStoreDescriptorSchema, DbTileSchema, DbMetadataSchema],
name: id,
directory: directory.absolute.path,
maxSizeMiB: databaseMaxSize,
compactOnLaunch: databaseCompactCondition,
),
);
}).toList(),
),
),
);