refactor(apps): 重构数据层目录结构并新增启动预热编排器

This commit is contained in:
zl-q
2026-03-29 20:26:30 +08:00
parent 33340de8f9
commit 4db9a13bfe
108 changed files with 1653 additions and 1320 deletions
+1 -3
View File
@@ -1,9 +1,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:social_app/data/cache/cache_policy.dart';
import 'package:social_app/data/cache/cached_repository.dart';
import 'package:social_app/data/cache/hybrid_cache_store.dart';
import 'package:social_app/data/cache/memory_cache_store.dart';
import 'package:social_app/data/cache/persistent_cache_store.dart';
import 'package:social_app/data/cache/cache_store.dart';
class _IntCachedRepository extends CachedRepository<int> {
int loadCount = 0;
+28
View File
@@ -0,0 +1,28 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:social_app/data/cache/cache_store.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('HybridCacheStore', () {
test('falls back to persistent and backfills memory', () async {
SharedPreferences.setMockInitialValues(<String, Object>{});
final prefs = await SharedPreferences.getInstance();
final persistent = PersistentCacheStore(prefs: prefs);
await persistent.write<String>('k', 'v');
final hybrid = HybridCacheStore(
memory: MemoryCacheStore(),
persistent: persistent,
);
final firstRead = await hybrid.read<String>('k');
expect(firstRead, 'v');
await persistent.remove('k');
final secondRead = await hybrid.read<String>('k');
expect(secondRead, 'v');
});
});
}
+39
View File
@@ -0,0 +1,39 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:social_app/data/cache/cache_store.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('SharedPrefsCacheStore', () {
test('persists entries across instances', () async {
SharedPreferences.setMockInitialValues(<String, Object>{});
final prefs = await SharedPreferences.getInstance();
final storeA = SharedPrefsCacheStore(prefs: prefs);
await storeA.write<String>('k', 'v');
final storeB = SharedPrefsCacheStore(prefs: prefs);
final value = await storeB.read<String>('k');
expect(value, 'v');
});
test('reads cache entry persisted payload', () async {
SharedPreferences.setMockInitialValues(<String, Object>{});
final prefs = await SharedPreferences.getInstance();
final now = DateTime.utc(2026, 3, 29, 12, 0, 0);
final storeA = SharedPrefsCacheStore(prefs: prefs);
await storeA.write<CacheEntry<String>>(
'entry',
CacheEntry<String>(value: 'payload', fetchedAt: now),
);
final storeB = SharedPrefsCacheStore(prefs: prefs);
final entry = await storeB.read<CacheEntry<String>>('entry');
expect(entry, isNotNull);
expect(entry!.value, 'payload');
expect(entry.fetchedAt, now);
});
});
}