package com.knecon.fforesight.service.layoutparser.internal.api.queue;

import java.util.Map;
import java.util.Optional;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.NonNull;

@Builder
@Schema(description = "Object containing all storage paths the service needs to know.")
public record LayoutParsingRequest(
        @Schema(description = "Enum specifying the type of layout parsing to be performed.", allowableValues = "{RedactManager, DocuMine, TAAS}")//
        @NonNull LayoutParsingType layoutParsingType,

        @Schema(description = "General purpose identifiers. They are not changed by the service at all and are returned as is in the response queue.")//
        Map<String, String> identifier,

        @Schema(description = "Path to the original PDF file.")//
        @NonNull String originFileStorageId,//


        @Schema(description = "Optional Path to the table extraction file.")//
        Optional<String> tablesFileStorageId,//
        @Schema(description = "Optional Path to the image classification file.")//
        Optional<String> imagesFileStorageId,//

        @Schema(description = "Optional Path to the the visual layout parsing service file") Optional<String> visualLayoutParsingFileId,//

        @Schema(description = "Path where the Document Structure File will be stored.")//
        @NonNull String structureFileStorageId,//
        @Schema(description = "Path where the Research Data File will be stored.")//
        String researchDocumentStorageId,//
        @Schema(description = "Path where the Document Text File will be stored.")//
        @NonNull String textBlockFileStorageId,//
        @Schema(description = "Path where the Document Positions File will be stored.")//
        @NonNull String positionBlockFileStorageId,//
        @Schema(description = "Path where the Document Pages File will be stored.")//
        @NonNull String pageFileStorageId,//
        @Schema(description = "Path where the Simplified Text File will be stored.")//
        @NonNull String simplifiedTextStorageId,//
        @Schema(description = "Path where the Viewer Document PDF will be stored.")//
        @NonNull String viewerDocumentStorageId) {

}
