Transaction.java

package com.paymybuddy.paymybuddy.model;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Entity
@Table(name = "transaction")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Transaction {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(nullable = false)
    private BigDecimal amount;

    @ManyToOne
    @JoinColumn(name = "sender_id", nullable = false)
    private User sender;

    @ManyToOne
    @JoinColumn(name = "receiver_id", nullable = false)
    private User receiver;

    private String description;

    private BigDecimal fee;

    @Column(name = "date_created")
    private LocalDateTime dateCreated;

    @Override
    public String toString() {
        return String.format(
            "Transaction{id=%d, sender=%s, receiver=%s, amount=%s, fee=%s, description='%s', dateCreated=%s}",
            id, sender.getUsername(), receiver.getUsername(), amount, fee, description, dateCreated
        );
}
}