package org.initialde.yakasave.Domain.Entities;

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

import java.util.List;
import java.util.UUID;

@Entity
@Table(name = "users")
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class UserSnapshot {
    @Id
    private UUID id;
    private String username;
    private String password;

    @OneToMany(mappedBy = "owner")
    private List<SavingsFundSnapshot> savingsFunds;

    @OneToMany(mappedBy = "contributor")
    private List<Contribution> contributions;

    @OneToMany(mappedBy = "approvedBy")
    private List<WithdrawalApproval> receiptsApprovals;


    @ManyToMany(mappedBy = "contributors", cascade = {CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
    private List<SavingsFundSnapshot> contributedFunds;
}
