brick_offline_first_with_supabase 2.0.0
brick_offline_first_with_supabase: ^2.0.0 copied to clipboard
A Brick domain that routes data fetching through local providers before a Supabase provider.
// This file is named main for discovery on pub.dev, however, in a real-world
// application it would be lib/brick/repository.dart.
import 'package:brick_offline_first_with_supabase/brick_offline_first_with_supabase.dart';
import 'package:brick_sqlite/brick_sqlite.dart';
import 'package:brick_sqlite/memory_cache_provider.dart';
import 'package:brick_supabase/brick_supabase.dart';
import 'package:sqflite/sqflite.dart' show databaseFactory;
import 'package:supabase/supabase.dart';
// Only relative imports are recognized in this nested package in VSCode.
// You should always use package imports in real-world code.
// ignore: always_use_package_imports
import 'brick/brick.g.dart';
// ignore: always_use_package_imports
import 'brick/db/schema.g.dart';
class MyRepository extends OfflineFirstWithSupabaseRepository {
static late MyRepository? _singleton;
MyRepository._({
required super.supabaseProvider,
required super.sqliteProvider,
required super.migrations,
required super.offlineRequestQueue,
super.memoryCacheProvider,
});
factory MyRepository() => _singleton!;
static void configure({
required String supabaseUrl,
required String supabaseAnonKey,
}) {
final (client, queue) = OfflineFirstWithSupabaseRepository.clientQueue(
// For Flutter, use import 'package:sqflite/sqflite.dart' show databaseFactory;
// For unit testing (even in Flutter), use import 'package:sqflite_common_ffi/sqflite_ffi.dart' show databaseFactory;
databaseFactory: databaseFactory,
);
final provider = SupabaseProvider(
SupabaseClient(supabaseUrl, supabaseAnonKey, httpClient: client),
modelDictionary: supabaseModelDictionary,
);
_singleton = MyRepository._(
supabaseProvider: provider,
sqliteProvider: SqliteProvider(
'my_repository.sqlite',
databaseFactory: databaseFactory,
modelDictionary: sqliteModelDictionary,
),
migrations: migrations,
offlineRequestQueue: queue,
memoryCacheProvider: MemoryCacheProvider(),
);
}
}
copied to clipboard