From 39666ab0e55a4e53bef005442ead3ad5526b69af Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Tue, 15 Oct 2024 16:52:04 +0200 Subject: [PATCH 01/22] chore: refractor --- lib/flutter_supabase_macro.dart | 2 +- lib/src/mixins/to_json_supabase.dart | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/flutter_supabase_macro.dart b/lib/flutter_supabase_macro.dart index fa2f131..a2e7a71 100644 --- a/lib/flutter_supabase_macro.dart +++ b/lib/flutter_supabase_macro.dart @@ -21,6 +21,7 @@ macro class FlutterSupabaseMacro implements ClassDeclarationsMacro, ClassDefinitionMacro { /// Primary key to exclude from the `toJsonSupabase`. + @override final String primaryKey; const FlutterSupabaseMacro({this.primaryKey = 'id'}); @@ -49,7 +50,6 @@ macro class FlutterSupabaseMacro clazz, builder, introspectionData, - primaryKey, ); } } diff --git a/lib/src/mixins/to_json_supabase.dart b/lib/src/mixins/to_json_supabase.dart index b9bddf2..ec99770 100644 --- a/lib/src/mixins/to_json_supabase.dart +++ b/lib/src/mixins/to_json_supabase.dart @@ -1,6 +1,8 @@ part of '../../flutter_supabase_macro.dart'; mixin _ToJsonSupabase on _Shared { + String get primaryKey; + /// Declare the [_toJsonMethodName] method. Future _declareToJsonSupabase( ClassDeclaration clazz, @@ -51,7 +53,6 @@ mixin _ToJsonSupabase on _Shared { ClassDeclaration clazz, TypeDefinitionBuilder typeBuilder, _SharedIntrospectionData introspectionData, - String primaryKey, ) async { // Get all methods of the class final methods = await typeBuilder.methodsOf(clazz); @@ -84,7 +85,6 @@ mixin _ToJsonSupabase on _Shared { field, builder, introspectionData, - isPrimaryKey: field.identifier.name == primaryKey, ), ), ), @@ -241,10 +241,10 @@ mixin _ToJsonSupabase on _Shared { Future addEntryForField( FieldDeclaration field, DefinitionBuilder builder, - _SharedIntrospectionData introspectionData, { - bool isPrimaryKey = false, - }) async { + _SharedIntrospectionData introspectionData, + ) async { final parts = []; + final isPrimaryKey = field.identifier.name == primaryKey; final doNullCheck = field.type.isNullable; final needCondition = doNullCheck || isPrimaryKey; // Begin the definition of the condition From d209c6391b6df2a20e025f8eff8a4ad21153ea36 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Tue, 15 Oct 2024 20:06:00 +0200 Subject: [PATCH 02/22] chore: refractor --- lib/flutter_supabase_macro.dart | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/flutter_supabase_macro.dart b/lib/flutter_supabase_macro.dart index a2e7a71..a5cecd0 100644 --- a/lib/flutter_supabase_macro.dart +++ b/lib/flutter_supabase_macro.dart @@ -44,13 +44,11 @@ macro class FlutterSupabaseMacro ClassDeclaration clazz, TypeDefinitionBuilder builder, ) async { - final introspectionData = - await _SharedIntrospectionData.build(builder, clazz); - await _buildToJsonSupabase( - clazz, + final introspectionData = await _SharedIntrospectionData.build( builder, - introspectionData, + clazz, ); + await _buildToJsonSupabase(clazz, builder, introspectionData); } } From 42c51b1a13360669a4f3aee81fb804c093b974d1 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Tue, 15 Oct 2024 23:09:01 +0200 Subject: [PATCH 03/22] feature: can hide fields --- lib/src/mixins/to_json_supabase.dart | 62 ++++++++++++++++--- lib/src/models/shared_introspection_data.dart | 9 ++- test/flutter_supabase_macro_test.dart | 56 +++++++++++++---- 3 files changed, 105 insertions(+), 22 deletions(-) diff --git a/lib/src/mixins/to_json_supabase.dart b/lib/src/mixins/to_json_supabase.dart index ec99770..f3a4e4f 100644 --- a/lib/src/mixins/to_json_supabase.dart +++ b/lib/src/mixins/to_json_supabase.dart @@ -1,5 +1,16 @@ +// ignore_for_file: deprecated_member_use + part of '../../flutter_supabase_macro.dart'; +extension HelperExtensionString on String { + /// Set the first character to upper case. + /// + /// ```dart + /// 'test of the function'.firstLetterUpperCase(); // 'Test of the function' + /// ``` + String firstLetterToUpperCase() => "${this[0].toUpperCase()}${substring(1)}"; +} + mixin _ToJsonSupabase on _Shared { String get primaryKey; @@ -12,13 +23,47 @@ mixin _ToJsonSupabase on _Shared { // Check that no toJsonSupabase method exist final checkNoToJson = await _checkNoToJson(builder, clazz); if (!checkNoToJson) return; + final boolId = await builder.resolveIdentifier(_dartCore, 'bool'); + final boolCode = NamedTypeAnnotationCode(name: boolId); + final fields = await builder.fieldsOf(clazz); builder.declareInType( - DeclarationCode.fromParts( - [' external ', mapStringObject, ' $_toJsonMethodName();\n'], - ), + DeclarationCode.fromParts([ + ' external ', + mapStringObject, + ' $_toJsonMethodName(', + if (fields.isNotEmpty) '{\n', + if (fields.isNotEmpty) ..._createNamedParams(boolCode, fields), + if (fields.isNotEmpty) '\n }', + ');\n' + ]), ); } + /// Create `List` of parts. + /// + /// Example : [fields] contain one element named `firstField`, it will add : + /// ```dart + /// ' bool? hideFirstField,' + /// ``` + List _createNamedParams( + NamedTypeAnnotationCode boolCode, + List fields, + ) { + final list = []; + for (final field in fields) { + list.addAll([ + ' ', + boolCode, + '? ', + 'hide', + field.identifier.name.firstLetterToUpperCase(), + ',', + if (field != fields.last) '\n', + ]); + } + return list; + } + /// Emits an error [Diagnostic] if there is an existing [_toJsonMethodName] /// method on [clazz]. /// @@ -131,9 +176,7 @@ mixin _ToJsonSupabase on _Shared { final methodIsMap = await methodReturnType.isExactly( introspectionData.jsonMapType, ); - if (method.namedParameters.isNotEmpty || - method.positionalParameters.isNotEmpty || - !methodIsMap) { + if (!methodIsMap) { builder.report( Diagnostic( DiagnosticMessage( @@ -248,6 +291,8 @@ mixin _ToJsonSupabase on _Shared { final doNullCheck = field.type.isNullable; final needCondition = doNullCheck || isPrimaryKey; // Begin the definition of the condition + final t = field.identifier.name.firstLetterToUpperCase(); + parts.addAll(['if (hide$t==null || !hide$t) {\n ']); if (needCondition) { parts.addAll(['if (']); } @@ -265,7 +310,7 @@ mixin _ToJsonSupabase on _Shared { } } // Close definition of the condition and open it - if (needCondition) parts.add(') {\n '); + if (needCondition) parts.add(') {\n '); // Add the field in the json parts.addAll([ "json[r'", @@ -284,8 +329,9 @@ mixin _ToJsonSupabase on _Shared { ]); // Close the condition if (needCondition) { - parts.add('}\n '); + parts.add(' }\n '); } + parts.add('}\n '); return RawCode.fromParts(parts); } diff --git a/lib/src/models/shared_introspection_data.dart b/lib/src/models/shared_introspection_data.dart index 817059c..01c2e0e 100644 --- a/lib/src/models/shared_introspection_data.dart +++ b/lib/src/models/shared_introspection_data.dart @@ -26,6 +26,9 @@ final class _SharedIntrospectionData { /// A [Code] representation of the type `dynamic`. final NamedTypeAnnotationCode dynamicCode; + /// A [Code] representation of the type [bool]. + final NamedTypeAnnotationCode boolCode; + /// A [Code] representation of the type [String]. final NamedTypeAnnotationCode stringCode; @@ -41,18 +44,20 @@ final class _SharedIntrospectionData { required this.mapEntry, required this.dynamicCode, required this.stringCode, + required this.boolCode, required this.superclass, }); static Future<_SharedIntrospectionData> build( DeclarationPhaseIntrospector builder, ClassDeclaration clazz) async { // Resolve identifiers - final (list, map, mapEntry, dynamic, string) = await ( + final (list, map, mapEntry, dynamic, string, bool) = await ( builder.resolveIdentifier(_dartCore, 'List'), builder.resolveIdentifier(_dartCore, 'Map'), builder.resolveIdentifier(_dartCore, 'MapEntry'), builder.resolveIdentifier(_dartCore, 'dynamic'), builder.resolveIdentifier(_dartCore, 'String'), + builder.resolveIdentifier(_dartCore, 'bool'), ).wait; // Get all NamedTypeAnnotationCode @@ -65,6 +70,7 @@ final class _SharedIntrospectionData { dynamicCode, ]); final stringCode = NamedTypeAnnotationCode(name: string); + final boolCode = NamedTypeAnnotationCode(name: bool); // Get the class's superclass (if exist) final superclass = clazz.superclass; @@ -88,6 +94,7 @@ final class _SharedIntrospectionData { mapEntry: mapEntry, dynamicCode: dynamicCode, stringCode: stringCode, + boolCode: boolCode, superclass: superclassDecl as ClassDeclaration?, ); } diff --git a/test/flutter_supabase_macro_test.dart b/test/flutter_supabase_macro_test.dart index b558d7e..69c0bd3 100644 --- a/test/flutter_supabase_macro_test.dart +++ b/test/flutter_supabase_macro_test.dart @@ -11,22 +11,52 @@ class User { } void main() { - test('Test that id is missing from the json because is empty', () { - final user = User(id: '', name: 'Toto', age: 22); - final json = user.toJsonSupabase(); + group('Test the removal of the primaryKey `id`', () { + test('Test that `id` is remove from the json because is empty', () { + final user = User(id: '', name: 'Toto', age: 22); + final json = user.toJsonSupabase(); - expect(json.keys.length, 2); - expect(json['name'], 'Toto'); - expect(json['age'], 22); + expect(json.keys.length, 2); + expect(json['name'], 'Toto'); + expect(json['age'], 22); + }); + + test('Test that `id` is NOT remove from the json because is NOT empty', () { + final user = User(id: 'id-123', name: 'Toto', age: 22); + final json = user.toJsonSupabase(); + + expect(json.keys.length, 3); + expect(json['id'], 'id-123'); + expect(json['name'], 'Toto'); + expect(json['age'], 22); + }); }); - test('Test that id is NOT missing from the json because is NOT empty', () { - final user = User(id: 'id-123', name: 'Toto', age: 22); - final json = user.toJsonSupabase(); + group('Test hidings', () { + final user = User(id: '1234', name: 'Francisa', age: 45); + + test('Test `id` is remove from the json because is hide', () { + final json = user.toJsonSupabase(hideId: true); + + expect(json.keys.length, 2); + expect(json['name'], 'Francisa'); + expect(json['age'], 45); + }); + + test('Test `name` is remove from the json because is hide', () { + final json = user.toJsonSupabase(hideName: true); + + expect(json.keys.length, 2); + expect(json['id'], '1234'); + expect(json['age'], 45); + }); + + test('Test `age` is remove from the json because is hide', () { + final json = user.toJsonSupabase(hideAge: true); - expect(json.keys.length, 3); - expect(json['id'], 'id-123'); - expect(json['name'], 'Toto'); - expect(json['age'], 22); + expect(json.keys.length, 2); + expect(json['id'], '1234'); + expect(json['name'], 'Francisa'); + }); }); } From e71b069e6042ea6db28f12ee45799ce2cec646ee Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:14:59 +0200 Subject: [PATCH 04/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2281156..8af75c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.0.1 +## 0.0.1(https://github.com/ThomasDevApps/flutter_supabase_macro/pull/1) Initial release : - Creation of a `toJsonSupabase` which exclude the `primaryKey` from the `Map` From 119f1d73d6e064bd81bb360c3948cc0539cce529 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:15:18 +0200 Subject: [PATCH 05/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8af75c4..9435c83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.0.1(https://github.com/ThomasDevApps/flutter_supabase_macro/pull/1) +## 0.0.1 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/1) Initial release : - Creation of a `toJsonSupabase` which exclude the `primaryKey` from the `Map` From b6574bdf6eb67fe39dc9b62218b6a4603c9b3bee Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:15:50 +0200 Subject: [PATCH 06/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9435c83..a976a82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ Initial release : - Creation of a `toJsonSupabase` which exclude the `primaryKey` from the `Map` -## 0.0.4 +## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) Only exclude `primaryKey` from the Map if : - Can't be nullable then check that `!= null` From a75b37c1ff995bfbf0a4b5a2d954be333e1d1c0c Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:20:19 +0200 Subject: [PATCH 07/22] Update CHANGELOG.md --- CHANGELOG.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a976a82..d46185a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,19 @@ -## 0.0.1 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/1) +## 0.0.5 -Initial release : -- Creation of a `toJsonSupabase` which exclude the `primaryKey` from the `Map` +Add a named parameter for each field of the class. +For example, if class contain a field named `id` then `bool? hideId` +will be added as a named parameter of `toJsonSupabase`. + +If `hideId` is not null and true, then `id` will be remove from the json. ## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) Only exclude `primaryKey` from the Map if : - Can't be nullable then check that `!= null` -- The type is `String`, then check that the value `isNotEmpty` \ No newline at end of file +- The type is `String`, then check that the value `isNotEmpty` + + +## 0.0.1 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/1) + +Initial release : +- Creation of a `toJsonSupabase` which exclude the `primaryKey` from the `Map` \ No newline at end of file From 53de8f9887a2da333ea85dfb99b5ce4f2a97b91c Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:20:54 +0200 Subject: [PATCH 08/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d46185a..34d4d1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.0.5 +## 0.0.5 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/5) Add a named parameter for each field of the class. For example, if class contain a field named `id` then `bool? hideId` From 984cf183c10ba1ca01da41bb5ad13daec4805959 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:25:19 +0200 Subject: [PATCH 09/22] Create before.png --- assets/before.png | Bin 20262 -> 33890 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/before.png b/assets/before.png index 4f578b303bb0a7ebe36c4d28963934f9f7ba8023..950dcb2f9c49d24a3a560fc872e1074629e106ca 100644 GIT binary patch literal 33890 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 LL!lV-BH(`kp#{;C literal 20262 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%0Ah9Y%*GhYLa+A^FSn7wcGS_=G(CUS=%Xuk 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

%$saRj!jC6y{ zEey3axg+}*1Ok4279YasIlWhBJQ?EJE@Huo^640 za7EDjfOT1UVxK)BW|Dh)X;Ax=5Ehs8jcI#RL zYk?3PxC7vCU0{ From 0ecd3f67cf5a646ae5cd96e9f4e9c1c0e5705f5d Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:36:12 +0200 Subject: [PATCH 10/22] doc --- lib/src/mixins/to_json_supabase.dart | 34 ++++++++++++++++++++------- test/flutter_supabase_macro_test.dart | 12 +++++----- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/lib/src/mixins/to_json_supabase.dart b/lib/src/mixins/to_json_supabase.dart index f3a4e4f..bcc21f7 100644 --- a/lib/src/mixins/to_json_supabase.dart +++ b/lib/src/mixins/to_json_supabase.dart @@ -43,7 +43,7 @@ mixin _ToJsonSupabase on _Shared { /// /// Example : [fields] contain one element named `firstField`, it will add : /// ```dart - /// ' bool? hideFirstField,' + /// ' bool? removeFirstField,' /// ``` List _createNamedParams( NamedTypeAnnotationCode boolCode, @@ -55,7 +55,7 @@ mixin _ToJsonSupabase on _Shared { ' ', boolCode, '? ', - 'hide', + 'remove', field.identifier.name.firstLetterToUpperCase(), ',', if (field != fields.last) '\n', @@ -138,15 +138,31 @@ mixin _ToJsonSupabase on _Shared { parts.add('return json;\n }'); builder.augment( FunctionBodyCode.fromParts(parts), - docComments: CommentCode.fromParts([ - ' /// Map representing the model in json format for Supabase.\n', - ' ///\n', - ' /// The primary key [${fields.first.identifier.name}]', - ' is exclude from the map if empty.' - ]), + docComments: _createDocumentationForMethod(fields), ); } + CommentCode _createDocumentationForMethod(List fields) { + return CommentCode.fromParts([ + ' /// Map representing the model in json format for Supabase.\n', + ' ///\n', + ' /// The primary key [${fields.first.identifier.name}]', + ' is exclude from the map if empty.\n', + ' ///\n', + ' /// ', + ...fields.map((f) { + return [ + '[remove', + f.identifier.name.firstLetterToUpperCase(), + ']', + if (f != fields.last) ', ' + ].join(); + }), + ' can be set for remove field\n' + ' /// from the json.' + ]); + } + /// Returns void if [toJsonSupabase] not exist. /// /// Otherwise it will check that [toJsonSupabase] is valid with [_checkValidToJson]. @@ -292,7 +308,7 @@ mixin _ToJsonSupabase on _Shared { final needCondition = doNullCheck || isPrimaryKey; // Begin the definition of the condition final t = field.identifier.name.firstLetterToUpperCase(); - parts.addAll(['if (hide$t==null || !hide$t) {\n ']); + parts.addAll(['if (remove$t==null || !remove$t) {\n ']); if (needCondition) { parts.addAll(['if (']); } diff --git a/test/flutter_supabase_macro_test.dart b/test/flutter_supabase_macro_test.dart index 69c0bd3..517efce 100644 --- a/test/flutter_supabase_macro_test.dart +++ b/test/flutter_supabase_macro_test.dart @@ -35,24 +35,24 @@ void main() { group('Test hidings', () { final user = User(id: '1234', name: 'Francisa', age: 45); - test('Test `id` is remove from the json because is hide', () { - final json = user.toJsonSupabase(hideId: true); + test('Test `id` is remove from the json', () { + final json = user.toJsonSupabase(removeId: true); expect(json.keys.length, 2); expect(json['name'], 'Francisa'); expect(json['age'], 45); }); - test('Test `name` is remove from the json because is hide', () { - final json = user.toJsonSupabase(hideName: true); + test('Test `name` is remove from the json', () { + final json = user.toJsonSupabase(removeName: true); expect(json.keys.length, 2); expect(json['id'], '1234'); expect(json['age'], 45); }); - test('Test `age` is remove from the json because is hide', () { - final json = user.toJsonSupabase(hideAge: true); + test('Test `age` is remove from the json', () { + final json = user.toJsonSupabase(removeAge: true); expect(json.keys.length, 2); expect(json['id'], '1234'); From aa1008daa15bcdbf01865884c3ac9eb5a6006413 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:36:30 +0200 Subject: [PATCH 11/22] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34d4d1b..a7a3ae3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,10 @@ ## 0.0.5 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/5) Add a named parameter for each field of the class. -For example, if class contain a field named `id` then `bool? hideId` +For example, if class contain a field named `id` then `bool? removeId` will be added as a named parameter of `toJsonSupabase`. -If `hideId` is not null and true, then `id` will be remove from the json. +If `removeId` is not null and true, then `id` will be remove from the json. ## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) From 4f04b9bff952e34adacef349843a29b04481d731 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:39:51 +0200 Subject: [PATCH 12/22] Update before.png --- assets/before.png | Bin 33890 -> 42278 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/before.png b/assets/before.png index 950dcb2f9c49d24a3a560fc872e1074629e106ca..e5ebbd8087b2e31d2309435bf74c1d5a002e1243 100644 GIT binary patch literal 42278 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 ai|~qqRBX|$j>rc9_|a0=SF2I63;!=Ts~Erl literal 33890 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 LL!lV-BH(`kp#{;C From 4360a57a35052fd3c4ee4ebf935b45f0e3716334 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:40:34 +0200 Subject: [PATCH 13/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7a3ae3..c6405ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Add a named parameter for each field of the class. For example, if class contain a field named `id` then `bool? removeId` will be added as a named parameter of `toJsonSupabase`. -If `removeId` is not null and true, then `id` will be remove from the json. +If `removeId` is not null and true, then `id` will not be add the json. ## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) From 3bd0e4064e1dc014bb9d5b4b37d865d6011132a9 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 09:40:52 +0200 Subject: [PATCH 14/22] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6405ff..7b419c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Add a named parameter for each field of the class. For example, if class contain a field named `id` then `bool? removeId` will be added as a named parameter of `toJsonSupabase`. -If `removeId` is not null and true, then `id` will not be add the json. +If `removeId` is not null and true, then `id` will not be add in the json. ## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) From 23a5fa06d07bf26b3b9a4ab55b1b66964c81e77d Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:34:03 +0200 Subject: [PATCH 15/22] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b419c4..98de6f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,9 @@ Add a named parameter for each field of the class. For example, if class contain a field named `id` then `bool? removeId` -will be added as a named parameter of `toJsonSupabase`. +will be add as a named parameter for `toJsonSupabase`. -If `removeId` is not null and true, then `id` will not be add in the json. +If `removeId` is not null and true then, `id` will not be add in the json. ## 0.0.4 (https://github.com/ThomasDevApps/flutter_supabase_macro/pull/4) From 10d4c877fe05e8efd33ac2881e6937fce8452ea4 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:34:55 +0200 Subject: [PATCH 16/22] doc --- lib/src/mixins/to_json_supabase.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/src/mixins/to_json_supabase.dart b/lib/src/mixins/to_json_supabase.dart index bcc21f7..f1e02b5 100644 --- a/lib/src/mixins/to_json_supabase.dart +++ b/lib/src/mixins/to_json_supabase.dart @@ -142,6 +142,8 @@ mixin _ToJsonSupabase on _Shared { ); } + /// Create the documentation for [_toJsonMethodName] method + /// according with [fields]. CommentCode _createDocumentationForMethod(List fields) { return CommentCode.fromParts([ ' /// Map representing the model in json format for Supabase.\n', From ef793c067fa669a920a6a76cfcdc02c09aefd6a4 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:35:27 +0200 Subject: [PATCH 17/22] Update pubspec.yaml --- pubspec.yaml | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index 6e19d0e..d47d0c4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,39 +17,5 @@ dev_dependencies: sdk: flutter flutter_lints: ^5.0.0 -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. flutter: - # To add assets to your package, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - # - # For details regarding assets in packages, see - # https://flutter.dev/to/asset-from-package - # - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # To add custom fonts to your package, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts in packages, see - # https://flutter.dev/to/font-from-package From da3b73a25dd14a53a3fc8f067ac3ecd061715a9d Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:35:33 +0200 Subject: [PATCH 18/22] Update pubspec.yaml --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index d47d0c4..417fe40 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_supabase_macro description: "A new Flutter project." -version: 0.0.4 +version: 0.0.5 homepage: environment: From dd913fe9bf956e29bc5c2324228a6192f11fec27 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:38:21 +0200 Subject: [PATCH 19/22] chore: refractor --- lib/flutter_supabase_macro.dart | 1 + lib/src/extensions/string_extension.dart | 10 ++++++++++ lib/src/mixins/to_json_supabase.dart | 19 ++++++------------- 3 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 lib/src/extensions/string_extension.dart diff --git a/lib/flutter_supabase_macro.dart b/lib/flutter_supabase_macro.dart index a5cecd0..a096856 100644 --- a/lib/flutter_supabase_macro.dart +++ b/lib/flutter_supabase_macro.dart @@ -7,6 +7,7 @@ import 'package:macros/macros.dart'; part 'src/extensions/code_extension.dart'; part 'src/extensions/iterable_extension.dart'; part 'src/extensions/named_type_annotation_extension.dart'; +part 'src/extensions/string_extension.dart'; part 'src/extensions/type_declaration_extension.dart'; part 'src/mixins/shared.dart'; part 'src/mixins/to_json_supabase.dart'; diff --git a/lib/src/extensions/string_extension.dart b/lib/src/extensions/string_extension.dart new file mode 100644 index 0000000..f33fe9f --- /dev/null +++ b/lib/src/extensions/string_extension.dart @@ -0,0 +1,10 @@ +part of '../../flutter_supabase_macro.dart'; + +extension _StringExtension on String { + /// Set the first character to upper case. + /// + /// ```dart + /// 'test of the function'.firstLetterUpperCase(); // 'Test of the function' + /// ``` + String _firstLetterToUpperCase() => "${this[0].toUpperCase()}${substring(1)}"; +} diff --git a/lib/src/mixins/to_json_supabase.dart b/lib/src/mixins/to_json_supabase.dart index f1e02b5..66247c9 100644 --- a/lib/src/mixins/to_json_supabase.dart +++ b/lib/src/mixins/to_json_supabase.dart @@ -2,15 +2,6 @@ part of '../../flutter_supabase_macro.dart'; -extension HelperExtensionString on String { - /// Set the first character to upper case. - /// - /// ```dart - /// 'test of the function'.firstLetterUpperCase(); // 'Test of the function' - /// ``` - String firstLetterToUpperCase() => "${this[0].toUpperCase()}${substring(1)}"; -} - mixin _ToJsonSupabase on _Shared { String get primaryKey; @@ -56,7 +47,7 @@ mixin _ToJsonSupabase on _Shared { boolCode, '? ', 'remove', - field.identifier.name.firstLetterToUpperCase(), + field.identifier.name._firstLetterToUpperCase(), ',', if (field != fields.last) '\n', ]); @@ -155,7 +146,7 @@ mixin _ToJsonSupabase on _Shared { ...fields.map((f) { return [ '[remove', - f.identifier.name.firstLetterToUpperCase(), + f.identifier.name._firstLetterToUpperCase(), ']', if (f != fields.last) ', ' ].join(); @@ -308,9 +299,11 @@ mixin _ToJsonSupabase on _Shared { final isPrimaryKey = field.identifier.name == primaryKey; final doNullCheck = field.type.isNullable; final needCondition = doNullCheck || isPrimaryKey; + final fieldName = field.identifier.name._firstLetterToUpperCase(); // Begin the definition of the condition - final t = field.identifier.name.firstLetterToUpperCase(); - parts.addAll(['if (remove$t==null || !remove$t) {\n ']); + parts.addAll([ + 'if (remove$fieldName==null || !remove$fieldName) {\n ', + ]); if (needCondition) { parts.addAll(['if (']); } From 8d73451cfee3a6d112810ad96dd903c0e1f48990 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira <139474199+ThomasDevApps@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:39:27 +0200 Subject: [PATCH 20/22] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a443d3b..5176cad 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ and the Flutter guide for [developing packages and plugins](https://flutter.dev/to/develop-packages). --> # Flutter Supabase Macro +![testing workflow](https://github.com/ThomasDevApps/flutter_supabase_macro/actions/workflows/main.yml/badge.svg) Package greatly inspired by `JsonCodable` (from Dart), makes it easy to create a JSON format of a template for Supabase. From b1627b5652d99318cc0eb3513a8a7e412f3cfcd5 Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:40:11 +0200 Subject: [PATCH 21/22] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5176cad..feae36c 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ and the Flutter guide for Package greatly inspired by `JsonCodable` (from Dart), makes it easy to create a JSON format of a template for Supabase. -| Before | After | -|----------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------| +| Before | After | +|----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------| | ![before](https://raw.githubusercontent.com/ThomasDevApps/flutter_supabase_macro/main/assets/before.png) | ![after](https://raw.githubusercontent.com/ThomasDevApps/flutter_supabase_macro/main/assets/after.png) | - [What is a macro](#-what-is-a-macro) From ce783b59e7b1be702d794e0afe6f52a7876c6faf Mon Sep 17 00:00:00 2001 From: Thomas Ferreira Date: Wed, 16 Oct 2024 10:40:23 +0200 Subject: [PATCH 22/22] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index feae36c..953e0f0 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ and the Flutter guide for [developing packages and plugins](https://flutter.dev/to/develop-packages). --> # Flutter Supabase Macro + ![testing workflow](https://github.com/ThomasDevApps/flutter_supabase_macro/actions/workflows/main.yml/badge.svg) Package greatly inspired by `JsonCodable` (from Dart), makes it easy to create