package org.raddatz.familienarchiv.document;

import io.swagger.v3.oas.annotations.media.Schema;
import org.raddatz.familienarchiv.audit.ActivityActorDTO;
import org.raddatz.familienarchiv.person.Person;
import org.raddatz.familienarchiv.tag.Tag;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

public record DocumentListItem(
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        UUID id,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        String title,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        String originalFilename,
        String thumbnailUrl,
        LocalDate documentDate,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        DatePrecision metaDatePrecision,
        LocalDate metaDateEnd,
        Person sender,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        List<Person> receivers,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        List<Tag> tags,
        String archiveBox,
        String archiveFolder,
        String location,
        String summary,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        int completionPercentage,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        List<ActivityActorDTO> contributors,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        SearchMatchData matchData,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        LocalDateTime createdAt,
        @Schema(requiredMode = Schema.RequiredMode.REQUIRED)
        LocalDateTime updatedAt
) {}
