From 3b1eef05a2ca5e4b349f80b95d76c1e9a51fccdd Mon Sep 17 00:00:00 2001 From: LeslMosnk Date: Thu, 21 Sep 2023 11:17:57 +0200 Subject: [PATCH] static methods can be called from an instance of class with ObjectBox queries. --- generator/lib/src/code_chunks.dart | 34 +++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/generator/lib/src/code_chunks.dart b/generator/lib/src/code_chunks.dart index aa870316..4e5f17e2 100644 --- a/generator/lib/src/code_chunks.dart +++ b/generator/lib/src/code_chunks.dart @@ -724,17 +724,29 @@ class CodeChunks { 'Unsupported property type (${prop.type}): ${entity.name}.$name'); } - var propCode = ''' + var staticPropCode = ''' /// see [${entity.name}.${propertyFieldName(prop)}] - static final ${propertyFieldName(prop)} = '''; - if (prop.isRelation) { - propCode += + static final ${propertyFieldName(prop)} = '''; + + var instancePropCode = '''/// see [${entity.name}.${propertyFieldName(prop)}] + /// same as [${entity.name}_.${propertyFieldName(prop)}] + '''; + + if (prop.isRelation) { + staticPropCode += + 'QueryRelationToOne<${entity.name}, ${prop.relationTarget}>'; + instancePropCode += 'QueryRelationToOne<${entity.name}, ${prop.relationTarget}>'; } else { - propCode += 'Query${fieldType}Property<${entity.name}>'; + staticPropCode += 'Query${fieldType}Property<${entity.name}>'; + instancePropCode += 'Query${fieldType}Property<${entity.name}>'; } - propCode += '(_entities[$i].properties[$p]);'; - fields.add(propCode); + staticPropCode += '(_entities[$i].properties[$p]);'; + + instancePropCode += 'get ${propertyFieldName(prop)}\$ => ${entity.name}_.${propertyFieldName(prop)};'; + + fields.add(staticPropCode); + fields.add(instancePropCode); } for (var r = 0; r < entity.relations.length; r++) { @@ -745,10 +757,16 @@ class CodeChunks { /// see [${entity.name}.${rel.name}] static final ${rel.name} = QueryRelationToMany''' '<${entity.name}, $targetEntityName>(_entities[$i].relations[$r]);'); + + fields.add('''/// see [${entity.name}.${rel.name}] + /// same as [${entity.name}_.${rel.name}] + QueryRelationToMany<${entity.name}, $targetEntityName> get''' + '${rel.name}\$ => ${entity.name}_.${rel.name};'); } return ''' /// [${entity.name}] entity fields to define ObjectBox queries. + /// _optional:_ create instance or extend original entity to find queries by `property\$` class ${entity.name}_ {${fields.join()}} '''; } @@ -771,4 +789,4 @@ extension _Pubspec on Pubspec { bool get hasObxFlutterDependency => infixes.any((infix) => dependencies[depPackage(infix)] != null); -} +} \ No newline at end of file