FEAT : Ajout du mécanisme d'album avec partage et visibilité

This commit is contained in:
2025-12-03 12:46:02 +01:00
parent 66045aaf14
commit ff088361a0
43 changed files with 1080 additions and 56 deletions

View File

@@ -0,0 +1,52 @@
package local.epul4a.fotosharing.model;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
@Entity
@Getter
@Setter
public class Album {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String nom;
@Column(length = 1000)
private String description;
@ManyToOne(optional = false)
private Utilisateur proprietaire;
private LocalDateTime dateCreation;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Visibilite visibilite;
@ManyToMany
@JoinTable(
name = "album_photo",
joinColumns = @JoinColumn(name = "album_id"),
inverseJoinColumns = @JoinColumn(name = "photo_id")
)
private Set<Photo> photos = new HashSet<>();
@OneToMany(mappedBy = "album", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Partage> partages = new HashSet<>();
public enum Visibilite {
PRIVATE,
SHARED,
PUBLIC
}
}

View File

@@ -8,25 +8,25 @@ import lombok.Setter;
@Getter
@Setter
public class Partage {
public enum Permission {
READ,
COMMENT,
ADMIN
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "id_photo")
private Photo photo;
@ManyToOne
@JoinColumn(name = "id_utilisateur")
private Utilisateur utilisateur;
@Enumerated(EnumType.STRING)
private Permission permission = Permission.READ;
private Permission permission;
@ManyToOne
private Photo photo; // nullable si partage dalbum
@ManyToOne
private Album album; // nullable si partage de photo
public enum Permission {
READ, COMMENT, ADMIN
}
}

View File

@@ -5,7 +5,8 @@ import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List;
import java.util.HashSet;
import java.util.Set;
@Entity
@Getter
@@ -28,5 +29,9 @@ public class Photo {
@JoinColumn(name = "id_utilisateur")
private Utilisateur proprietaire;
// getters & setters
@ManyToMany(mappedBy = "photos")
private Set<Album> albums = new HashSet<>();
@OneToMany(mappedBy = "photo", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Partage> partages = new HashSet<>();
}