package ru.ibs.socrates.confexporter.dao.dto;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import java.time.OffsetDateTime;
import java.util.Optional;
import java.util.UUID;
import lombok.AllArgsConstructor;
import lombok.Data;


@Data
public class ContentDaoDto {
  
  private ContentId contentId;

  /**
   * ID из RabbitMQ сообщения
   */
  private UUID externalMessagelId;
  
  /**
   * Проект ИД
   */
  private UUID projectSourceId;
  
  /**
   * Проект название
   */
  private String projectTitle;
  
  /**
   * Проект коментарий
   */
  private String projectComment;
  
  /**
   * Тип контента в сообщении
   */
  private String contentType;

  /**
   * Содержимое сообщения
   */
  private String text;

  /**
   * url ссылка на содержимое
   */
  private String link;
  
  /**
   * Размер контента в сообщении.
   */
  private Long contentSize;
  
  /**
   * Время последнего обновления.
   */
  private OffsetDateTime updated;
  
  @Data
  @AllArgsConstructor
  public static class ContentId {
    
    @JsonValue
    private UUID entityId;

    @JsonCreator
    public static ContentId of(UUID entityId) {
      return Optional.ofNullable(entityId)
          .map(ContentId::new)
          .orElse(null);
    }
  }

}
