package <%= fullDomainPackage %> import <%= pkg %>.domain.infrastructure.IdentifiableService import <%= fullDomainPackage %>.infrastructure.<%= domain %>Repository import io.micronaut.validation.Validated import javax.inject.Inject import javax.inject.Singleton import javax.validation.Valid @Singleton class <%= domain %>Service @Inject constructor( private val <%= repository %>Repository: <%= domain %>Repository, private val <%= repository %>Validator: <%= domain %>Validator ) : IdentifiableService<<%= domain %>ValueObject> { override fun fetchById(id: Long): <%= domain %>ValueObject? = <%= repository %>Repository.findOne(id = id)?.let { <%= domain %>ValueObject(entity = it) } override fun exists(id: Long): Boolean = <%= repository %>Repository.exists(id = id) @Validated fun create(@Valid vo: <%= domain %>ValueObject): <%= domain %>ValueObject { <%= repository %>Validator.validateSave(vo) return <%= domain %>ValueObject( entity = <%= repository %>Repository.insert(entity = <%= domain %>(vo = vo)) ) } @Validated fun update(@Valid vo: <%= domain %>ValueObject): <%= domain %>ValueObject { <%= repository %>Validator.validateUpdate(vo) return <%= domain %>ValueObject( entity = <%= repository %>Repository.update(entity = <%= domain %>(vo = vo)) ) } }