ShoppingItemAttachment.java

package com.hwhub.backend.domain.model;

import lombok.Getter;

@Getter
public class ShoppingItemAttachment {

  private Long id;
  private Long shoppingItemId;
  private String fileKey;
  private String fileName;
  private String mimeType;
  private Integer sortOrder;
  private String imageUrl;

  /**
   * 全プロパティを引数に取るコンストラクタ。
   *
   * @param id 買い物アイテム添付ファイルID
   * @param shoppingItemId 買い物アイテムID
   * @param fileKey ファイルストレージキー
   * @param fileName ファイル名
   * @param mimeType MIMEタイプ
   * @param sortOrder 表示順
   * @param imageUrl 画像のURL
   */
  private ShoppingItemAttachment(
      Long id,
      Long shoppingItemId,
      String fileKey,
      String fileName,
      String mimeType,
      Integer sortOrder,
      String imageUrl) {
    this.id = id;
    this.shoppingItemId = shoppingItemId;
    this.fileKey = fileKey;
    this.fileName = fileName;
    this.mimeType = mimeType;
    this.sortOrder = sortOrder;
    this.imageUrl = imageUrl;
  }

  /**
   * 再構築・永続化用。infrastructure層からのみ呼び出されることを想定。
   *
   * @param id 買い物アイテム添付ファイルID
   * @param shoppingItemId 買い物アイテムID
   * @param fileKey ファイルストレージキー
   * @param fileName ファイル名
   * @param mimeType MIMEタイプ
   * @param sortOrder 表示順
   * @return インスタンスを返す。
   */
  public static ShoppingItemAttachment reconstruct(
      Long id,
      Long shoppingItemId,
      String fileKey,
      String fileName,
      String mimeType,
      Integer sortOrder) {
    return new ShoppingItemAttachment(
        id, shoppingItemId, fileKey, fileName, mimeType, sortOrder, null);
  }

  public static ShoppingItemAttachment create(
      Long shoppingItemId, String fileKey, String fileName, String mimeType, Integer sortOrder) {
    return new ShoppingItemAttachment(
        null, shoppingItemId, fileKey, fileName, mimeType, sortOrder, null);
  }

  public void setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
  }
}