diff --git a/couchbase-entity/src/main/java/com/kaufland/generation/EntityGeneration.kt b/couchbase-entity/src/main/java/com/kaufland/generation/EntityGeneration.kt index 58dcb232..710f3450 100644 --- a/couchbase-entity/src/main/java/com/kaufland/generation/EntityGeneration.kt +++ b/couchbase-entity/src/main/java/com/kaufland/generation/EntityGeneration.kt @@ -19,6 +19,7 @@ class EntityGeneration { var companionSpec = TypeSpec.companionObjectBuilder() companionSpec.addProperty(idConstant()) companionSpec.addFunctions(create(holder)) + companionSpec.addFunction(findById(holder)) for (query in holder.queries) { query.queryFun(holder.dbName, holder)?.let { @@ -67,6 +68,13 @@ class EntityGeneration { } + private fun findById(holder: EntityHolder): FunSpec { + return FunSpec.builder("findById").addModifiers(KModifier.PUBLIC).addParameter("id", String::class).addAnnotation(JvmStatic::class) + .addStatement("val result = %T.$GET_DOCUMENT_METHOD(id, %S)", PersistenceConfig::class, holder.dbName) + .addStatement("return if(result != null) %N(result) else null", holder.entitySimpleName) + .returns(holder.entityTypeName.copy(true)).build() + } + private fun idConstant(): PropertySpec { return PropertySpec.builder("_ID", String::class, KModifier.PUBLIC, KModifier.FINAL).initializer("%S", "_id").addAnnotation(JvmField::class).build()