Skip to content

Commit

Permalink
fix(supabase): resolve conflicting adapter fields (#420)
Browse files Browse the repository at this point in the history
  • Loading branch information
tshedor authored Aug 27, 2024
1 parent 188ea28 commit 47997af
Show file tree
Hide file tree
Showing 24 changed files with 55 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class CustomerAdapter extends OfflineFirstWithSupabaseAdapter<Customer> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'id': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
2 changes: 1 addition & 1 deletion example_supabase/lib/brick/adapters/pizza_adapter.g.dart
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class PizzaAdapter extends OfflineFirstWithSupabaseAdapter<Pizza> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'id': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class HorseAdapter extends OfflineFirstWithSupabaseAdapter<Horse> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'name': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ class KitchenSinkAdapter extends OfflineFirstWithSupabaseAdapter<KitchenSink> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'anyString': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class MountyAdapter extends OfflineFirstWithSupabaseAdapter<Mounty> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'name': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
11 changes: 8 additions & 3 deletions packages/brick_offline_first_with_supabase/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@ dependency_overrides:
path: ../../brick_supabase
brick_supabase_generators:
path: ../../brick_supabase_generators
brick_build:
path: ../../brick_build
brick_offline_first_with_supabase_build:
path: ../../brick_offline_first_with_supabase_build
brick_offline_first_build:
path: ../../brick_offline_first_build

dev_dependencies:
build_runner: any
build_resolvers: any
build_runner:
build_resolvers:
brick_offline_first_with_supabase_build:
path: ../../brick_offline_first_with_supabase_build
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ abstract class OfflineFirstWithSupabaseRepository
required DatabaseFactory databaseFactory,
http.Client? innerClient,
Duration? processingInterval,
List<int>? reattemptForStatusCodes,
bool? serialProcessing,
}) {
final client = RestOfflineQueueClient(
Expand All @@ -96,6 +97,7 @@ abstract class OfflineFirstWithSupabaseRepository
processingInterval: processingInterval,
serialProcessing: serialProcessing,
),
reattemptForStatusCodes: reattemptForStatusCodes,
);
return (client, RestOfflineRequestQueue(client: client));
}
Expand Down
3 changes: 2 additions & 1 deletion packages/brick_offline_first_with_supabase/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ homepage: https://github.com/GetDutchie/brick/tree/main/packages/brick_offline_f
issue_tracker: https://github.com/GetDutchie/brick/issues
repository: https://github.com/GetDutchie/brick

version: 0.1.0
version: 0.1.0+1

environment:
sdk: ">=3.0.0 <4.0.0"
Expand All @@ -16,6 +16,7 @@ dependencies:
brick_supabase: ">=0.0.1 <2.0.0"
brick_sqlite: ">=3.0.0 <4.0.0"
brick_offline_first_with_rest: ">=3.0.2 <4.0.0"
http: ">=1.0.0 <2.0.0"
logging: ">=1.0.0 <2.0.0"
meta: ">=1.3.0 <2.0.0"
sqflite_common: ">=2.0.0 <3.0.0"
Expand Down
6 changes: 3 additions & 3 deletions packages/brick_offline_first_with_supabase_build/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ repository: https://github.com/GetDutchie/brick
version: 0.1.0

environment:
sdk: ">=2.18.0 <4.0.0"
sdk: ">=3.0.0 <4.0.0"

dependencies:
analyzer: ">=5.0.0 <6.0.0"
brick_build: ">=3.0.0 <4.0.0"
analyzer: ">=6.0.0 <7.0.0"
brick_build: ">=3.1.0 <4.0.0"
brick_offline_first: ">=3.0.0 <4.0.0"
brick_offline_first_build: ">=3.0.0 <4.0.0"
brick_offline_first_with_supabase: ">=0.0.1 <2.0.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ class SupabaseDefinedAdapter extends OfflineFirstAdapter<SupabaseDefined> {
SupabaseDefinedAdapter();
@override
final tableName = 'supabase_defineds';
final supabaseTableName = 'supabase_defineds';
@override
final defaultToNull = false;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someLongField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ class SupabaseDefinedAdapter extends OfflineFirstAdapter<SupabaseDefined> {
SupabaseDefinedAdapter();
@override
final tableName = 'supabase_defineds';
final supabaseTableName = 'supabase_defineds';
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someLongField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ class SupabaseDefinedAdapter extends OfflineFirstAdapter<SupabaseDefined> {
SupabaseDefinedAdapter();
@override
final tableName = 'supabase_defineds';
final supabaseTableName = 'supabase_defineds';
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someLongField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand All @@ -52,7 +52,7 @@ class SupabaseDefinedAdapter extends OfflineFirstAdapter<SupabaseDefined> {
@override
final ignoreDuplicates = false;
@override
final onConflict = user_id, other_id;
final onConflict = 'user_id,other_id';
@override
final uniqueFields = {};
@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ class SupabaseDefinedAdapter extends OfflineFirstAdapter<SupabaseDefined> {
SupabaseDefinedAdapter();
@override
final tableName = 'strictly_defined_items';
final supabaseTableName = 'strictly_defined_items';
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someLongField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ class UndefinedCamelizedNameAdapter
UndefinedCamelizedNameAdapter();
@override
final tableName = 'undefined_camelized_names';
final supabaseTableName = 'undefined_camelized_names';
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someLongField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ Future<void> generateExpectation(
}) async {
final reader = await generateReader(filename);
final generated = await (generator ?? _generator).generate(reader, MockBuildStep());
print(generated);
expect(generated.trim(), output.trim());
}

Expand Down
5 changes: 5 additions & 0 deletions packages/brick_supabase/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
## Unreleased

## 0.1.1

- Resolve `QuerySupabaseTransformer` bugs
- Fix table name collision in offline adapter (#416)

## 0.1.0

- Alpha release
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,11 @@ class SupabaseSerializable {
/// Defaults to `FieldRename.snake` case.
final FieldRename fieldRename;

/// Forwards to Supabase's ignoreDuplicates parameter.
/// Forwards to Supabase's `ignoreDuplicates` parameter.
final bool ignoreDuplicates;

/// Forwards to Supabase's onConflict parameter.
/// Forwards to Supabase's `onConflict` parameter.
/// This should be comma-separated Supabase column names, not Dart fields.
final String? onConflict;

/// The Supabase table name to fetch from. For example, `"users"`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,13 @@ class RuntimeSupabaseColumnDefinition {
/// This is true for `Iterable<SupabaseModel>` and `SupabaseModel`. Defaults to `false`.
final bool association;

/// The column in the class's table that relates to another table in Supabase.
/// For example, given the Supabase table `users` with a column of `address_id` indexing
/// to the table `addresses`, `'address_id'` would be this value.
final String? associationForeignKey;

/// The Dart type if [association] is `true`. This value has no nullability suffixes
/// and is not wrapped in `Future` or any other `Iterable` type.
final Type? associationType;

/// The Supabase column name, **not** the field name unless this definition is an association.
Expand Down
2 changes: 2 additions & 0 deletions packages/brick_supabase/lib/src/supabase_adapter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ abstract mixin class SupabaseAdapter<TModel extends SupabaseModel> implements Ad
/// used to target upsert and delete operations.
Set<String> get uniqueFields;

/// Deserializes from Supabase
Future<TModel> fromSupabase(
Map<String, dynamic> input, {
required SupabaseProvider provider,
ModelRepository<SupabaseModel>? repository,
});

/// Serializes to Supabase
Future<Map<String, dynamic>> toSupabase(
TModel input, {
required SupabaseProvider provider,
Expand Down
2 changes: 1 addition & 1 deletion packages/brick_supabase/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ homepage: https://github.com/GetDutchie/brick/tree/main/packages/brick_supabase
issue_tracker: https://github.com/GetDutchie/brick/issues
repository: https://github.com/GetDutchie/brick

version: 0.1.0
version: 0.1.1+1

environment:
sdk: ">=3.0.0 <4.0.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ class SupabaseSerialize extends SupabaseSerdesGenerator
return [
if (config?.defaultToNull != null)
'@override\nfinal defaultToNull = ${config?.defaultToNull};',
'@override\nfinal Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {${fieldsToColumns.join(',\n')}};',
'@override\nfinal fieldsToSupabaseColumns = {${fieldsToColumns.join(',\n')}};',
'@override\nfinal ignoreDuplicates = ${config?.ignoreDuplicates};',
if (config?.onConflict != null) '@override\nfinal onConflict = ${config?.onConflict};',
if (config?.onConflict != null) "@override\nfinal onConflict = '${config?.onConflict}';",
'@override\nfinal uniqueFields = {${uniqueFields.map((u) => "'$u'").join(',\n')}};',
];
}
Expand Down
8 changes: 4 additions & 4 deletions packages/brick_supabase_generators/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ homepage: https://github.com/GetDutchie/brick/tree/main/packages/brick_supabase_
issue_tracker: https://github.com/GetDutchie/brick/issues
repository: https://github.com/GetDutchie/brick

version: 0.1.1
version: 0.1.1+2

environment:
sdk: ">=2.18.0 <4.0.0"
sdk: ">=3.0.0 <4.0.0"

dependencies:
analyzer: ">=5.0.0 <7.0.0"
analyzer: ">=6.0.0 <7.0.0"
brick_build: ">=3.0.0 <4.0.0"
brick_core: ^1.1.1
brick_json_generators: ">=3.0.0 <4.0.0"
brick_json_generators: ">=3.1.0 <4.0.0"
brick_supabase: ">=0.0.1 <2.0.0"
build: ">=2.0.0 <3.0.0"
dart_style: ">=2.0.0 <3.0.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SupabaseRuntimeAdapter extends SupabaseFirstAdapter<SupabaseRuntime> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class SupabaseUniqueAdapter extends SupabaseFirstAdapter<SupabaseUnique> {
@override
final defaultToNull = true;
@override
final Map<String, RuntimeSqliteColumnDefinition> fieldsToSqliteColumns = {
final fieldsToSupabaseColumns = {
'someField': const RuntimeSupabaseColumnDefinition(
association: false,
associationForeignKey: 'null',
Expand Down

0 comments on commit 47997af

Please sign in to comment.