RegularPlan.java

package com.deveagles.be15_deveagles_be.features.schedules.command.domain.aggregate;

import jakarta.persistence.*;
import java.time.LocalTime;
import lombok.*;

@Entity
@Table(name = "regular_plan")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class RegularPlan {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "regular_plan_id")
  private Long regularPlanId;

  @Column(name = "staff_id", nullable = false)
  private Long staffId;

  @Column(name = "shop_id", nullable = false)
  private Long shopId;

  @Column(name = "regular_plan_title", nullable = false, length = 50)
  private String regularPlanTitle;

  @Column(name = "monthly_plan")
  private Integer monthlyPlan;

  @Enumerated(EnumType.STRING)
  @Column(name = "weekly_plan")
  private DayOfWeekEnum weeklyPlan;

  @Column(name = "regular_plan_memo")
  private String regularPlanMemo;

  @Column(name = "regular_plan_start_at", nullable = false)
  private LocalTime regularPlanStartAt;

  @Column(name = "regular_plan_end_at", nullable = false)
  private LocalTime regularPlanEndAt;

  public void update(
      String title,
      Integer monthlyPlan,
      DayOfWeekEnum weeklyPlan,
      String memo,
      LocalTime start,
      LocalTime end) {
    this.regularPlanTitle = title;
    this.monthlyPlan = monthlyPlan;
    this.weeklyPlan = weeklyPlan;
    this.regularPlanMemo = memo;
    this.regularPlanStartAt = start;
    this.regularPlanEndAt = end;
  }
}