EquipmentJpaEntity.java

package com.github.jenkaby.bikerental.equipment.infrastructure.persistence.entity;

import jakarta.persistence.*;
import lombok.*;

import java.time.Instant;
import java.time.LocalDate;

@ToString
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "equipments")
public class EquipmentJpaEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "serial_number", nullable = false, unique = true, length = 50)
    private String serialNumber;

    @Column(unique = true, length = 100)
    private String uid;

    @Column(name = "type_slug", nullable = false, length = 50)
    private String typeSlug;

    @Column(name = "status_slug", nullable = false, length = 50)
    private String statusSlug;

    @Column(length = 200)
    private String model;

    @Column(name = "commissioned_at")
    private LocalDate commissionedAt;

    @Column(columnDefinition = "TEXT")
    private String condition;

    @Column(name = "created_at", nullable = false, updatable = false)
    private Instant createdAt;

    @Column(name = "updated_at")
    private Instant updatedAt;

    @PrePersist
    public void prePersist() {
        if (this.createdAt == null) {
            this.createdAt = Instant.now();
        }
    }

    @PreUpdate
    public void preUpdate() {
        this.updatedAt = Instant.now();
    }
}