package <%= fullDomainPackage %> import <%= fullDomainPackage %>.infrastructure.<%= domain %>Repository import com.github.javafaker.Faker import io.micronaut.context.annotation.Requires import java.util.stream.IntStream import java.util.stream.Stream import javax.inject.Inject import javax.inject.Singleton object <%= domain %>Factory { @JvmStatic fun stream(numberIn: Int = 1): Stream<<%= domain %>> { val number = if (numberIn > 0) numberIn else 1 val faker = Faker() return IntStream.range(0, number).mapToObj { <%= domain %>( null ) } } @JvmStatic fun single(): <%= domain %> { return stream(1).findFirst().orElseThrow { Exception("Unable to create <%= domain %>") } } } @Singleton @Requires(env = ["demo", "test"]) class <%= domain %>FactoryService @Inject constructor( private val <%= repository %>Repository: <%= domain %>Repository ) { fun stream(numberIn: Int = 1): Stream<<%= domain %>> { return <%= domain %>Factory.stream(numberIn) .map { <%= repository %>Repository.insert(it) } } fun single(): <%= domain %> { return stream(1).findFirst().orElseThrow { Exception("Unable to create <%= domain %>") } } }