feat(backend): implement step 3 — VirtualEntityRepository and DispatchLogRepository

This commit is contained in:
2026-03-26 18:41:54 -03:00
parent 387f707429
commit 6e95acc128
2 changed files with 37 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
package com.condado.newsletter.repository
import com.condado.newsletter.model.DispatchLog
import com.condado.newsletter.model.VirtualEntity
import org.springframework.data.jpa.repository.JpaRepository
import java.util.Optional
import java.util.UUID
/**
* Repository for [DispatchLog] with custom query methods.
*/
interface DispatchLogRepository : JpaRepository<DispatchLog, UUID> {
/** Returns all dispatch logs for the given [VirtualEntity]. */
fun findAllByVirtualEntity(virtualEntity: VirtualEntity): List<DispatchLog>
/** Returns the most recent dispatch log for the given [VirtualEntity], or empty if none exist. */
fun findTopByVirtualEntityOrderByDispatchedAtDesc(virtualEntity: VirtualEntity): Optional<DispatchLog>
}

View File

@@ -0,0 +1,18 @@
package com.condado.newsletter.repository
import com.condado.newsletter.model.VirtualEntity
import org.springframework.data.jpa.repository.JpaRepository
import java.util.Optional
import java.util.UUID
/**
* Repository for [VirtualEntity] with custom query methods.
*/
interface VirtualEntityRepository : JpaRepository<VirtualEntity, UUID> {
/** Returns all entities where [VirtualEntity.active] is true. */
fun findAllByActiveTrue(): List<VirtualEntity>
/** Finds an entity by its unique email address. */
fun findByEmail(email: String): Optional<VirtualEntity>
}