RepositoryMembership.java
package com.taxonomy.workspace.model;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;
import jakarta.persistence.Version;
import java.time.Instant;
/** Explicit user membership and role assignment within one central repository. */
@Entity
@Table(
name = "repository_membership",
uniqueConstraints = @UniqueConstraint(
name = "uq_repository_membership_repo_user",
columnNames = {"repository_id", "username"}),
indexes = {
@Index(name = "idx_repository_membership_user", columnList = "username"),
@Index(name = "idx_repository_membership_repository", columnList = "repository_id")
})
public class RepositoryMembership {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "repository_id", nullable = false)
private String repositoryId;
@Column(name = "username", nullable = false)
private String username;
@Enumerated(EnumType.STRING)
@Column(name = "repository_role", nullable = false)
private RepositoryRole role;
@Column(name = "created_at", nullable = false)
private Instant createdAt;
@Column(name = "created_by", nullable = false)
private String createdBy;
@Column(name = "updated_at")
private Instant updatedAt;
@Version
@Column(name = "version", nullable = false)
private long version;
public Long getId() {
return id;
}
public String getRepositoryId() {
return repositoryId;
}
public void setRepositoryId(String repositoryId) {
this.repositoryId = repositoryId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public RepositoryRole getRole() {
return role;
}
public void setRole(RepositoryRole role) {
this.role = role;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public long getVersion() {
return version;
}
}