package com.condado.newsletter.dto import com.condado.newsletter.model.EntityTask import com.condado.newsletter.model.TaskGenerationSource import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.NotNull import java.time.LocalDateTime import java.util.UUID data class EntityTaskCreateDto( @field:NotNull val entityId: UUID, @field:NotBlank val name: String, val prompt: String, @field:NotBlank val scheduleCron: String, @field:NotBlank val emailLookback: String, val generationSource: TaskGenerationSource = TaskGenerationSource.LLAMA ) data class EntityTaskUpdateDto( @field:NotNull val entityId: UUID, @field:NotBlank val name: String, @field:NotBlank val prompt: String, @field:NotBlank val scheduleCron: String, @field:NotBlank val emailLookback: String, val generationSource: TaskGenerationSource? = null ) data class EntityTaskResponseDto( val id: UUID, val entityId: UUID, val name: String, val prompt: String, val scheduleCron: String, val emailLookback: String, val generationSource: TaskGenerationSource, val active: Boolean, val createdAt: LocalDateTime? ) { companion object { fun from(task: EntityTask): EntityTaskResponseDto = EntityTaskResponseDto( id = task.id!!, entityId = task.virtualEntity.id!!, name = task.name, prompt = task.prompt, scheduleCron = task.scheduleCron, emailLookback = task.emailLookback, generationSource = task.generationSource, active = task.active, createdAt = task.createdAt ) } }