package com.infoclinika.pdx.projection;

import com.infoclinika.pdx.domain.sample.SampleType;
import org.springframework.beans.factory.annotation.Value;

import java.util.List;

/**
 * Projection of Sample.
 */
@SuppressWarnings("InterfaceNeverImplemented")
public interface SampleSummary {
    Long getId();

    String getName();

    SampleType getType();

    IdAndName getProject();

    IdAndName getDiseaseType();

    IdAndName getPrimarySite();

    List<FieldValues> getFieldValues();

    /**
     * Projection of sample field.
     */
    interface FieldValues {
        @Value("#{target.field.name}")
        String getField();

        String getValue();
    }
}
