kopia lustrzana https://gitlab.com/mysocialportal/relatica
Fix ObjectBoxCache singleton to return existing cache object if already existing for path
rodzic
48a6a404d6
commit
951f50ee7a
|
@ -4,19 +4,29 @@ import 'package:logging/logging.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
|
import '../../globals.dart';
|
||||||
import '../../objectbox.g.dart';
|
import '../../objectbox.g.dart';
|
||||||
|
|
||||||
class ObjectBoxCache {
|
class ObjectBoxCache {
|
||||||
static final _logger = Logger('ObjectBoxCache');
|
static final _logger = Logger('ObjectBoxCache');
|
||||||
|
static final _openCaches = <String, ObjectBoxCache>{};
|
||||||
late final Store store;
|
late final Store store;
|
||||||
|
|
||||||
ObjectBoxCache._create(this.store);
|
ObjectBoxCache._create(this.store);
|
||||||
|
|
||||||
static Future<ObjectBoxCache> create(
|
static Future<ObjectBoxCache> create({
|
||||||
{String baseDir = 'objectboxcache', String? subDir}) async {
|
String baseDir = 'objectboxcache',
|
||||||
|
String? subDir,
|
||||||
|
}) async {
|
||||||
final docsDir = await getApplicationSupportDirectory();
|
final docsDir = await getApplicationSupportDirectory();
|
||||||
|
|
||||||
final path = p.join(docsDir.path, baseDir, subDir);
|
final path = p.join(docsDir.path, baseDir, subDir);
|
||||||
|
_logger.info('ObjectBoxCache path: $path');
|
||||||
|
if (_openCaches.containsKey(path)) {
|
||||||
|
_logger.fine('Cache already exists for path, returning it: $path');
|
||||||
|
return _openCaches[path]!;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final directory = Directory(path);
|
final directory = Directory(path);
|
||||||
if (!directory.existsSync()) {
|
if (!directory.existsSync()) {
|
||||||
|
@ -25,9 +35,14 @@ class ObjectBoxCache {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
_logger.severe('Error creating ObjectCachePathDirectory: $e');
|
_logger.severe('Error creating ObjectCachePathDirectory: $e');
|
||||||
}
|
}
|
||||||
_logger.info('ObjectBoxCache path: $path');
|
|
||||||
final store = await openStore(
|
final store = await openStore(
|
||||||
directory: path, macosApplicationGroup: 'T69YZGT58U.relatica');
|
directory: path,
|
||||||
return ObjectBoxCache._create(store);
|
macosApplicationGroup: macOsGroupId,
|
||||||
|
);
|
||||||
|
final cache = ObjectBoxCache._create(store);
|
||||||
|
_openCaches[path] = cache;
|
||||||
|
_logger.fine('New cache created for path: $path');
|
||||||
|
return cache;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue